C语言用递推和递归两种算法完成斐波那契数列的计算,给一下代码

搞不懂递推和递归究竟有什么区别TT顺便解释一下吧~~... 搞不懂递推和递归究竟有什么区别T T顺便解释一下吧~~ 展开
 我来答
匿名用户
2019-07-06
展开全部
//递归法
int fibo1(int n)
{
if( n == 1 || n == 2) return 1;
else return fibo1(n-1)+fibo1(n-2);
}
//递推法
int fibo2(int n)
{
int f0=1,f1=1,f;
if (n<2)
return 1;
for(int i=2;i<n-1;i++)
{
f=f0+f1;
f0=f1;
f1=f;
}
return f;
}
区别:递推是直接使用已知的条件去推出未知的条件;递归则是将大问题逐渐转化为若干个相同的子问题,直到得到已知的最小子问题,再回溯依次得到父问题的答案。是由未知到已知,再从已知到未知。对于复杂的问题,递归把问题简单化,读起来易懂。
447587096
推荐于2017-09-11 · TA获得超过5043个赞
知道大有可为答主
回答量:2504
采纳率:70%
帮助的人:1129万
展开全部
//递归,就是函数自己调用自己
#include <stdio.h>
int feibonaqie(int n)
{
if(n == 0 )
return 0;
if(n == 1)
return 1;
else
return feibonaqie(n-1) + feibonaqie(n-2);
}
int main(void)
{
int n = 20 ;//假设输出20个数吧
int i;
for(i = 0; i <= n; i++)
printf("%d ",feibonaqie(i));
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小花猫爱大萝卜
2018-03-21
知道答主
回答量:5
采纳率:0%
帮助的人:3507
展开全部
#include<stdio.h>
#include<stdlib.h>
#include<time.h>
void main()
{
clock_t start, finish;
double duration=0;
int n;
printf ("input the data n=:");
scanf ("%d",&n);
start = clock();
fib(n);
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "递归法用时=%f seconds\n", duration );
start = clock();
fic(n);
finish = clock();
duration = (double)(finish - start) / CLOCKS_PER_SEC;
printf( "递推法用时=%f seconds\n", duration );
}
//递归法
int fib(int n)
{
if( n == 1 || n == 2) return 1;
else return fib(n-1)+fib(n-2);
}
//递推法
int fic (int n)
{
int f0=1,f1=1,f2,i=2;
if (n<2)
return(n);
while (i<=n)
{
f2=f1+f0;
f0=f1,f1=f2;
i++;
}
return f2;
}
此段程序将递归法和递推法计算斐波拉契函数的时间详细计算出,可以比较两个算法的时间复杂性。显然此处递推比递归算法要好得多。
递推就是从前往后推,递归还有个回溯的过程,通过调用自身函数完成计算。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
细雨aio
2018-01-08
知道答主
回答量:1
采纳率:0%
帮助的人:892
引用447587096的回答:
//递归,就是函数自己调用自己
#include <stdio.h>
int feibonaqie(int n)
{
if(n == 0 )
return 0;
if(n == 1)
return 1;
else
return feibonaqie(n-1) + feibonaqie(n-2);
}
int main(void)
{
int n = 20 ;//假设输出20个数吧
int i;
for(i = 0; i <= n; i++)
printf("%d ",feibonaqie(i));
}
展开全部
n==2呢??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式