> On Oct 1, 2016, at 9:29 AM, Jan Kacaba <jan.kac...@gmail.com> wrote: > > 2016-10-01 18:02 GMT+02:00 David Winsemius <dwinsem...@comcast.net>: >> >>> On Oct 1, 2016, at 8:44 AM, Jan Kacaba <jan.kac...@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)"? > > Yes I meant that. > >>> 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 function: > binary3 <- function(n) { > if(n > 1) { > binary3(as.integer(n/2)) > } > cat(n %% 2, ",") > } > > and call binary3(10) the console output is separated. So there must be > some kind of buffer and also it looks like there is some inconsistency > in how cat function behaves. Probably there is other explanation.
The only inconsistency is how you sent arguments to cat. In the first instance you asked cat to display a single character value (and to separate multiple characters _if_present_ with a comma, .... but there were never any instances of a cat call with multiple arguments). In the second instance you told it to display single character values followed by a comma and it did that 4 times when the argument to the enclosing function was a decimal 10. If by buffer you mean the console stream, then I suppose I misunderstood your use of the term. -- David Winsemius Alameda, CA, USA ______________________________________________ R-help@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.