c语言编写计算斐波那契(Fibonacci)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c语言编写计算斐波那契(Fibonacci)相关的知识,希望对你有一定的参考价值。

数列的第n项函数fib(n)(n<40)。
数列:
f1=f2==1;
fn=fn-1+fn-2(n>=3)。
输入
输入整数n的值。
输出
输出fib(n)的值。
示例输入
7
示例输出
13

这是我做的。。。用了函数调用 不知道哪里错了
#include<stdio.h>
int fib(int n,int f)

if(n==1&&n==2)
f=1;
else
f=fib(n-1,f)+fib(n-2,f);
return f;

int main()

int n,f;
f=fib(n,f);
printf("%d",f);
return 0;

斐波那契数列为:0,1,1,2,3,5,8,13.....

/*你的程序*/
#include<stdio.h>
int fib(int n,int f)

if(n==1&&n==2) /*n不可能同时等于1和2,所以递归无终点,会一直递归下去。*/
f=1; /*正确的斐波那契数列是n==1时f=0,n==2时f=1*/
else
f=fib(n-1,f)+fib(n-2,f);
return f;

int main()

int n,f; /*n没有赋初始值*/
f=fib(n,f);
printf("%d",f);
return 0;

/*改正后的程序*/
#include<stdio.h>
int fib(int n,int f)

if(n==1)

f=0;

else if(n==2)

f=1;

else

f=fib(n-1,f)+fib(n-2,f);

return f;


int main()

int n,f;
scanf("%d,%d",&n,&f);
f=fib(n,f);
printf("%d",f);

return 0;
参考技术A if(n==1&&n==2)

这块啊,应该是
if(n==1||n==2)一个成立就行
其他的我没看

斐波那契数列

斐波那契数列(Fibonacci)是指头两项为1,之后每项为前两项之和。
F(1) = F(2) = 1;
F(N) = F(N-1) + F(N -2) (N > 2)
输入N,请你求出不小于N的最小Fibonacci数列中的数。例如:
Fibonacci的前八个数为:1,1,2,3,5,8,13,21。
如果输入9,在数列中,不小于9的最小数为13.同理输入7,则结果应为8,输入15,结果为21
答案在哪里

参考技术A #include <stdio.h>
void main()

int a,b,c;
int N;
c=a=b=1;
scanf("%d",&N);
while(c<N)

c=a+b;
a=b;
b=c;

printf("%d\n",c);
return;
//...............本回答被提问者采纳
参考技术B #include<stdio.h>
int fib(int n)

if(n==1||n==2)
return 1;
else return fib(n-1)+fib(n-2);

void main()

int n;
scanf("%d",&n);
int i,f;
for(i=1;(f=fib(i))<=n;i++);
printf("%d",f);
参考技术C #include<stdio.h>
long func(long n)

if(n==0||n==1)return n;
else return func(n-1)+func(n-2);

void main()
long n;
printf("请输入n:");
scanf("%ld",&n);
printf("the result is %ld",func(n));
参考技术D 看答案的。。

以上是关于c语言编写计算斐波那契(Fibonacci)的主要内容,如果未能解决你的问题,请参考以下文章

Fibonacci数列

C语言求斐波那契(Fibonacci)数列通项(递归法非递归法)

用递归方法计算斐波那契数列(Recursion Fibonacci Python)

用递归法计算斐波那契数列的第n项

利用数组计算斐波那契数列

斐波那契数列