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

Reply via email to