编写递归函数求Fibonacci数列的第 n 项,这个数列是这样定义的:
递归函数对于这种递推关系的实现是十分容易理解的,因为这个公式的展开比较复杂
可见,递归能解决的问题循环也能解决,但解决问题的思路不一样。
fib(0)=1
fib(1)=1
fib(n)=fib(n-1)+fib(n-2)
实现方式一:
利用递归函数
int fib(int n)
{
int result;
if(n==0 || n==1)
result = 1;
else result = fib(n-1)+fib(n-2);
return result;
}
递归函数对于这种递推关系的实现是十分容易理解的,因为这个公式的展开比较复杂
实现方式二:
利用循环
#include<stdio.h>
int main()
{
int i,number,result;
int result1=0,result2=0;
scanf("%d",&number);
i=0;
while(i<=number)
{
if(i<=1)
result=1;
else result=result1+result2;
result2=result1;
result1=result;
i++;
}
printf("%d\n",result);
return 0;
}
可见,递归能解决的问题循环也能解决,但解决问题的思路不一样。
在整个递归过程中虽然分配和释放看很多变量,但是所有变量都只在初始化的时候赋值,没有任何量的值发生过改变。
但是用循环的话就要不断的对result,result1,result2进行赋值