# [R] Recursion problem

William Dunlap wdunlap at tibco.com
Sun Aug 22 17:51:41 CEST 2010

```> -----Original Message-----
> From: r-help-bounces at r-project.org
> [mailto:r-help-bounces at r-project.org] On Behalf Of Shant Ch
> Sent: Saturday, August 21, 2010 9:04 PM
> To: r-help at r-project.org
> Subject: [R] Recursion problem
>
>
>
> Hi,
>
>
> I wanted to compute the value of the function ifn at certain
> values of n. But I
> am receiving the following error when I was using the
> following code(given at
> the end).
>
> Error: evaluation nested too deeply: infinite recursion /
> options(expressions=)?
>
> I feel that since the function Grx is recursively related,
> perhaps making the
> code too complicated too handle. Can anyone let me know if
> there is any other
> way to handle this problem?
>
>
> d1=10.5
> Grx<-function(x,r)
> {
> G0=Grx(x,0)
> G0=1;
> fu1<-function(t){exp(-t^2/(2*r*(r+1)))*Grx(x,r-1)}
> return(integrate(fu1,0,x)\$value)
> }

Your keep calling Grz(x, r-1) forever, as r descends
from its starting value towards -Inf.  Are you try
to use the
G0=Grz(x,0)
G0=1
to say what to return when r==0 (vaguely like Haskell)?
If so the proper syntax would be
Grx <- function (x, r) {
retval <- if (r < 0) {
# must r be integral?
stop("r must be nonnegative")
}
else if (r == 0) {
1
}
else {
fu1 <- function(t) {
exp(-t^2/(2 * r * (r + 1))) * Grx(x, r - 1)
}
integrate(fu1, 0, x)\$value
}
# Uncomment next line to trace the recursion
# cat("x=", x, ", r=", r, " -> ", retval, "\n")
retval
}

Bill Dunlap
Spotfire, TIBCO Software
wdunlap tibco.com

>
> grx<-function(x,r)
> {
> Grx(x,r)*exp(-x^2/(2*(r+1)))
> }
>
> ifn<-function(n)
> {
> w=n*d1/2;S1=0;
> for(k in  1:(n-1))
> {
>  S1=S1+choose(n,k)*grx(w,k)*grx(w,n-k-1)
> }
> return(S1);
> }
>
> ifn(7)
>
>
> Shant
>
>
>
> 	[[alternative HTML version deleted]]
>
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help