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.

______________________________________________
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.

Reply via email to