C语言编程问题:用Fibonacci数列为:1,1,2,3,5,8,13,....。

用Fibonacci数列为:1,1,2,3,5,8,13,....。用递归法编写求Fibonacci数的函数,在主函数中输入一个自然数,输出不小于该自然数的最小的一个Fi... 用Fibonacci数列为:1,1,2,3,5,8,13,....。用递归法编写求Fibonacci数的函数,在主函数中输入一个自然数,输出不小于该自然数的最小的一个Fibonacci数。 展开
 我来答
lucky_sage
推荐于2018-04-05 · TA获得超过180个赞
知道答主
回答量:106
采纳率:0%
帮助的人:112万
展开全部

修改一下max = cond+3;

========================

 

#include<stdio.h>

 

int fibonacci(int n)

{

 if(n== 1 || n==2)

 {

  return 1;

 }

 else

 {

  return fibonacci(n-1) + fibonacci(n-2);

 }

}

 

int main()

{   

 int cond;

 int i = 1;

 int max;

 int val;

 

 

 printf("请输入一个数:");

 scanf("%d",&cond);

 

    max = cond+3;

 

    for(i=1; i<max; i++)

 {

  val = fibonacci(i);

        printf("%d ",val);

  if(val >= cond)

  {

   break;

  }

 }

 

  printf("\n不小于自然数%d的最小的一个Fibonacci数为:%d\n",cond,val);

 

}

 

 

百度网友9b5cd8c3b
2013-04-22 · TA获得超过502个赞
知道答主
回答量:36
采纳率:0%
帮助的人:30.7万
展开全部
int fibo(int n) {
if (n <= 2) return 1;
else return fibo(n - 1) + fibo(n - 2);
}
这是递归函数, 输入的n表示你要数列的第n项
main函数就自己写吧, 从小到大枚举就可以了, 懒得写了

另外稍微说一下, 如果追求效率的话, 可以在递归过程中缓存所有的运算结果, 用少量的空间换取巨大的效率提升, 还可以参考数列的通项公式, 对大概的项数进行一下预估
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友3c1b3aa
2013-04-22 · TA获得超过1565个赞
知道小有建树答主
回答量:815
采纳率:0%
帮助的人:449万
展开全部
int n=5,a[];
scanf("%d",&n)
a[1]=1;
a[2]=1;
for [i=3;i<=n;i++]
{
a[i]=a[i-2]+a[i-1];
if a[i]>=n;
break;
}
printf("%d",a[i-1])
大概就是上面的思路吧,加点前缀什么的应该就可以了。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式