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;
/*你的程序*/
#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
答案在哪里
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)的主要内容,如果未能解决你的问题,请参考以下文章
C语言求斐波那契(Fibonacci)数列通项(递归法非递归法)