我想用递归写斐波那契数列,c语言 C语言如何使用递归算法处理斐波那契数列?

www.zhiqu.org     时间: 2024-06-15

代码:

#include<stdio.h>

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

if(n<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>=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),将斐波那契数列的通项式代入,化简就得结果。

参考资料:

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



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

#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
",i+1,fun(i+1));
    else
    printf("输入错误!请重新输入......
");
    
    return 0;
}


没怎么看懂你的递归,我给你写了一个,你参考参考
#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;
}

执行完 return ,return 后面的语句就不执行了。
其实可以这么写嘛
int fib(int n)
{
if(n<=2)
return 1 ;
else
return fib(n-1) + fib(n-2) ;
}
我只是大概写一下 , 细节自己把握一下吧

scanf ("%d", x);
没&号

(C语言)用递归方法编写求斐波那契数列的函数~

#include
long func(long n)
{
if(n==0||n==1)return n;
else return func(n-1)+func(n-2);
}
main()
{
long n;
printf("please input n:");
scanf("%ld",&n);
printf("the result is %ld",func(n));
}

//求第n项的递归函数
long long fib(int n)
{
if(n<=0)
return 0;
if(1==n || 2==n)
return 1;
return fib(n-1)+fib(n-2);
}


#冯洁辰# C语言 斐波那契数列怎么写 -
(15882582798): 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 #include<stdio.h> intfei(intindex) //数组实现 { if(index<1) { return-1; } if(index<3) { return1; } int*a=newint[index]; a[0]=a[1]=1; for(...

#冯洁辰# C语言编程:用函数递归法求Fibonacci数列的前n项· -
(15882582798): #include <stdio.h> long int F(int n) { if (n==1||!n) { return n; } else return F(n-1)+F(n-2); } int main(void) { int i,n; printf("n="); scanf("%d",&n); for (i=0; i<n; i++) { printf("%-10ld",F(i)); } return 0; } 在数理逻辑和计算机科学中 递归函数或μ-递归...

#冯洁辰# 初学C语言菜鸟求助:计算斐波那契数列的前20项(要求用递归法) -
(15882582798): /*以下内容是在VC6.0环境下编译运行成功的,现在一般学习C语言均使用该环境*/#include int Fibonacci(int n){ int m; if(n=...

#冯洁辰# C语言编写斐波那挈数列 -
(15882582798): 应该定义成长整型,要不然会数据溢出,下面用两种方法实现此问.个人认为,第二种方法好. 第一种:循环 #include<stdio.h> void main() { int i; long f1=1,f2=1; printf("前15组菲薄纳妾数列为\n"); for(i=0;i<15;i++)/*共输15组数,即30个*/ {...

#冯洁辰# C语言 用函数递归调用求 Fibonacci 数列的第20个数 - 作业帮
(15882582798):[答案] int Fibonacci(int n) { if(n==1||n==2) { return 1; } return Fibonacci(n-2) + Fibonacci(n-1); }

#冯洁辰# C语言用递归的方法编写函数求fibonacci数列的基础上,同时打印输出计算fibo -
(15882582798): #include <stdio.h> #define N 20 static count; int fib(int n){ count++; if(n==1 || n==0) return 1; return fib(n-1)+fib(n-2); } int main(int argc,char *argv[]){ int i; for(i=0;i<N;i++){ count=0; printf("%d",fib(i)); printf("(%d)\n",count); } printf("\n"); return 0; }

#冯洁辰# 斐波那契数列的算法 -
(15882582798): #include<stdio.h> void Fdt(long F1,long F2,int N);//递推 void Fdg(long F1,long F2,int N);//递归 main() { int n=20; long f1,f2; f1=f2=1; Fdt(f1,f2,n); printf("\n\n"); Fdg(f1,f2,n); } void Fdt(long F1,long F2,int N)//递推 { for(int i=1;i<=N;i++) { ...

#冯洁辰# 用c++递归写fibonacci数列
(15882582798): #include<iostream> using namespace std; int fib(int n) { if(n==0) return 0; else if(n==1) return 1; else return fib(n-1)+fib(n-2); } int main() { int a; cin>>a; cout<<fib(a)<<endl; return 0;}

#冯洁辰# 如何用C语言编写函数实现用递归法求Fibonacci数列前n项的值, n的值由键盘输入? -
(15882582798): #include "stdio.h" int Fibonacci(int a) { int sum; if((a==1)||(a==2)) { return 1; } else { sum = Fibonacci(a-1)+Fibonacci(a-2); } return sum; } void main() { int n; int sum; printf("input n,n>3:"); scanf("%d",&n); if(n<1) { printf("input error"); } sum=Fibonacci(n); printf("%d\n",sum); }

#冯洁辰# C语言:采用递归调用函数方法计算Fibonacci数列的前20项 - 作业帮
(15882582798):[答案] #include #define N 20 main(){ int f(int n); int i; for(i=1;i