基于C语言下的递归算法应用研究(3)
时间:2021-12-23 16:09 来源:毕业论文 作者:毕业论文 点击:次
int n,i; printf(“n=”); scanf(“%d”,&n); for(i=1;i<=n;i++) printf(“fib(%2d)=%3d\n”,i,fib(i)); getch(); } 程序的执行结果是: n=10 fib( 1)= 1 fib( 2)= 1 fib( 3)= 2 fib( 4)= 3 fib( 5)= 5 fib( 6)= 8 fib( 7)= 13 fib( 8)= 21 fib( 9)= 34 fib(10)= 55 由于fib(n)=fib(n-1)+fib(n-2),而fib(n-1)=fib(n-2)+fib(n-3),fib(n-2)=fib(n-3)+fib(n-4), ,最后可以推到fib(5)=fib(4)+fib(3),fib(4)=fib(3)+fib(2),fib(3)=fib(2)+fib(1),至此,因为fib(2)=fib(1)=1,所以可以算出fib(3)的值。从而算出fib(4)的值,以此类推,最后计算fib(n-2), fib(n-1)和fib(n)的值。来,自,优.尔:论;文*网www.youerw.com +QQ752018766- 因此,在函数fib中,出现对自身的递归调用从fib(n)开始,逐级往下调用,直到调用到函数fib(2)和fib(1)时,函数获得一个确定的返还值,停止继续往下的调用,然后开始逐级向上进行返回的过程,最终通过fib(n-1)和fib(n-2)的调用结果返回到fib(n),获得所需的结果。 2。2。2 间接递归 子程序A和B是嵌套关系的情况下,外层的A被内层的B调用,这是间接递归;子程序A 和B是平级关系的情况下,A调用了B且B调用了A,这也称为间接递归。不过,这种间接递归的方法采用到“超前引用”的规则。 (责任编辑:qin) |