float series(int n,float a)
{
if(n==1)return 1;
else
a=1.0/n+series(n-1,a);
return a;
}
运行验证结果没错,就对a有点不解,其实我根本就没搞清递归实体中的a的传递是怎么变化的,望大牛给小弟指点指点,谢谢!!!
首先这个递归写的有问题,n=0会报错,n<0会无限循环(因为没有跳出点)
其次这个递归跳出点是n=1,既 series(1,a)=1
n>1的时候,会一直执行series(n,a)直到n=1
所以就是计算a=1+1/2+1/3...+1/n的
嗯嗯嗯……是的,如果n>1,那第一次调用series函数后,执行a=1.0/n+series(n-1,a);最后那个a是什么值???
@sultan_h: 最后的a就是series函数的第二个参数值,其实没意义。。。你直接写
float series(int n){ if(n<=1)return 1; else return 1/n+series(n-1); }
就可以了
@飞来飞去: 噢,谢谢。不过你那1/n应该改成1.0/n,不然输出的是整数,嘿嘿。
@sultan_h: 嗯。。是我的基础差了。。。
顶楼上的