题目描述
The Fibonacci Numbers{0,1,1,2,3,5,8,13,21,34,55…} are defined by the recurrence: F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2 Write a program to calculate the Fibonacci Numbers.
斐波纳契数列{0,1,1,2,3,5,8,13,21,34,55……}的递归式定义为:F0=0 F1=1 Fn=Fn-1+Fn-2,n>=2 编写一个程序来计算斐波那契数。
输入描述
Each case contains a number n and you are expected to calculate Fn.(0<=n<=30) 。
每种情况都包含一个数字n,您需要计算Fn.(0<=n<=30)。
输出描述
For each case, print a number Fn on a separate line,which means the nth Fibonacci Number.
对于每种情况,在单独的一行上打印一个数字Fn,这意味着第n个斐波那契数字。
输入样例
1
输出样例
1
思路
求第n个斐波那契数字,可以用递归和非递归两种方法
代码
非递归
#include<bits/stdc++.h>
int main(){
int n;
scanf("%d",&n);
int f1=0;
int f2=1;
if(n==0){
printf("%d",f1);
}
else if(n==1){
printf("%d",f2);
}
else{
int f;
for(int i = 1;i<n;i++){
f = f1+f2;
f1 = f2;
f2 = f;
}
printf("%d",f);
}
return 0;
}
递归
#include<bits/stdc++.h>
int fib(int n){
if(n==0||n==1){
return n;
}
else{
return fib(n-1)+fib(n-2);
}
}
int main(){
int n;
scanf("%d",&n);
printf("%d",fib(n));
return 0;
}