[R] strange output of cat function used in recursive function
David Winsemius
dwinsemius at comcast.net
Sat Oct 1 18:02:03 CEST 2016
> On Oct 1, 2016, at 8:44 AM, Jan Kacaba <jan.kacaba at gmail.com> wrote:
>
> Hello Dear R-help
>
> I tried to understand how recursive programming works in R. Bellow is
> simple recursive function.
>
> binary1 <- function(n) {
> if(n > 1) {
> binary(as.integer(n/2))
> }
> cat(n %% 2)
> }
Did you mean to type "binary1(as.integer(n)"?
> When I call binary1(10) I get 1010. I believe that cat function stores
> value to a buffer appending values as recursion proceeds and at the
> end it prints the buffer. Am I right?
No. Read the ?cat help page. It returns NULL. The material you see at the console is a side-effect.
>
> I tried to modify the function to get some understanding:
>
> binary2 <- function(n) {
> if(n > 1) {
> binary2(as.integer(n/2))
> }
> cat(n %% 2, sep=",")
> }
>
> With call binary2(10) I get also 1010. Why the output is not separated
> by commas?
I think because there is nothing to separate when it prints (since there was no "buffer".
>
> If I use in binary2 function cat(n %% 2, ",") on last line, the output
> is separated. Outside recursive function the cat function prints
> separated output in both cases e.g. cat(c(1:10), sep=",") and
> cat(c(1:10), ",")
>
> Derek
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.
David Winsemius
Alameda, CA, USA
More information about the R-help
mailing list