已知F(n)=F(n-1)+F(n-2),F(0)=1,F(1)=1.分别用递归和循环求F
当我们拿到这样一道面试题目的时候,都会觉得不是很难,但是一下子把代码写出来, 可能部分同学对递归还不熟悉,也有部分同学对如何通过简单的循环去实现有疑问,下面通过代码为有疑问的同学进行解答,有不对的,也希望大牛在评论中指出。
其实递归说白了就是不断地调用自身,不断调用自身不能出现死循环,所以必须要有递归结束条件。
点击(此处)折叠或打开
#include <stdio.h>
//递归
int F_recursion(int n)
{
if(0 == n || 1 == n)//递归结束条件
{
return 1;
}
return F(n-1) + F(n-2);
}
//循环
int F_circulation(int n)
{
int f0 = 1;
int f1 = 1;
int i = 2;
int ret = 0;
for(;i <= n;i++)
{
ret = f0 + f1;
f0 = f1;
f1 = ret;
}
return ret;
}
int main(int argc, const char *argv[])
{
int n = 5;
printf("%d\n",F_recursion(5));
printf("%d\n",F_circulation(5));
return 0;
}
程序输出结果为:8.
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/2611/viewspace-3162021/ ,如需转载,请注明出处,否则将追究法律责任。