我想用递归写斐波那契数列,c语言

#include<stdio.h>ints(intm);intmain(void){intn,i=0;intx;scanf("%d",&n);while(i<n){sca... #include <stdio.h>
int s(int m);
int main (void)
{
int n, i = 0;
int x;
scanf ("%d", &n);
while (i < n)
{
scanf ("%d", x);
printf ("%d", s(x));
}
return 0;
}
int s(int m)
{
int f1 = 1;
int f2 = 1;
if (m = 1)
return 1;
else
{
return (f1 + f2);
f1 = f1 + f2;
f2 = f1 + f2;
m--;
}
}
哪里错了
展开
 我来答
问明6E
高粉答主

2019-05-21 · 每个回答都超有意思的
知道答主
回答量:279
采纳率:100%
帮助的人:12.2万
展开全部

代码:

#include&lt;stdio.h&gt;

int Fib(int n){//自定义函数

if(n&lt;0)

return-1;

else if(n==0)

return 0;

else if(n==1)

return 1;

else

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

}

int main(){

int num;

printf("请输入要求取的第n项斐波那契数列n=");

if(scanf("%d",&num)){

if(num&gt;=0){

printf("%d",Fib(num));

}

else

printf("Error!!!");

return 0;

}

return 0;

}

扩展资料:

斐波那契数列排列组合

有一段楼梯有10级台阶,规定每一步只能跨一级或两级,要登上第10级台阶有几种不同的走法

这就是一个斐波那契数列:登上第一级台阶有一种登法;登上两级台阶,有两种登法;登上三级台阶,有三种登法;登上四级台阶,有五种登法……

1,2,3,5,8,13……所以,登上十级,有89种走法。

类似的,一枚均匀的硬币掷10次,问不连续出现正面的可能情形有多少种?

答案是(1/√5)*{[(1+√5)/2]^(10+2)-[(1-√5)/2]^(10+2)}=144种。

求递推数列a⑴=1,a(n+1)=1+1/a(n)的通项公式

由数学归纳法可以得到:a(n)=F(n+1)/F(n),将斐波那契数列的通项式代入,化简就得结果。

参考资料:

百度百科——斐波那契数列

匿名用户
推荐于2017-09-03
展开全部

没怎么看懂你的递归,我给你写了一个,你参考参考

#include <stdio.h>

int fun(int n)
{
    if(n==1 || n==2)
    return 1;
    else
    return fun(n-1) + fun(n-2);
}

int main(void)
{
    int n,i=0;
    printf("请输入要输出数列的前多少项:");
    scanf("%d",&n);
    if(n>=1)
    for(i=0;i<n;i++)
    printf("Fibonacci数列的第%3d项是:%d\n",i+1,fun(i+1));
    else
    printf("输入错误!请重新输入......\n");
    
    return 0;
}
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
萨诚友妍
2019-12-01 · TA获得超过3.6万个赞
知道大有可为答主
回答量:1.2万
采纳率:30%
帮助的人:2084万
展开全部
没怎么看懂你的递归,我给你写了一个,你参考参考
#include
<stdio.h>
int
fun(int
n)
{
if(n==1
||
n==2)
return
1;
else
return
fun(n-1)
+
fun(n-2);
}
int
main(void)
{
int
n,i=0;
printf("请输入要输出数列的前多少项:");
scanf("%d",&n);
if(n>=1)
for(i=0;i<n;i++)
printf("fibonacci数列的第%3d项是:%d\n",i+1,fun(i+1));
else
printf("输入错误!请重新输入......\n");
return
0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhu91aizhu
2012-05-05 · TA获得超过178个赞
知道答主
回答量:108
采纳率:100%
帮助的人:71.2万
展开全部
执行完 return ,return 后面的语句就不执行了。
其实可以这么写嘛
int fib(int n)
{
if(n<=2)
return 1 ;
else
return fib(n-1) + fib(n-2) ;
}
我只是大概写一下 , 细节自己把握一下吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
qq841071705
2012-05-05
知道答主
回答量:15
采纳率:0%
帮助的人:10万
展开全部
scanf ("%d", x);
没&号
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(6)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式