搜的
//斐波那契 递归
#include<iostream>
#include<iomanip>//控制输出
using namespace std;
long long int fib(long long int n){
if( n==0 || n==1){
return n;//递归终止条件
}
else{
return fib(n-1)+fib(n-2);//递归调用
}
}
int main(){
for(int i=0;i<50;i++){//求斐波那契数列中的第n个对应的值 (50)
long long int a=fib(i);
cout<<i<<setw(15)//控制输出格式
<<a<<endl;
}
return 0;
}
自己改了点打的(递归)
#include<stdio.h>
int fib(int a){//递归
if(a==0||a==1){
return 1;//递归终止
}
else{
return fib(a-1)+fib(a-2);
}
}
int main(){
int n;
printf("请输入位数:");
scanf("%d",&n);
for(int i=0;i<n;i++){
printf("%d ",fib(i));
}
}
参考书自己打的(动态规划)
#include<stdio.h>
int count=1;
int dp[100];
int fib(int n){
dp[1]=dp[2]=1;
printf("(%d)fib(1)=1\n",count++);
printf("(%d)fib(2)=1\n",count++);
for(int i=3;i<=n;i++){
dp[i]=dp[i-1]+dp[i-2];
printf("(%d)fib(%d)=%d\n",count++,i,dp[i]);
}
return dp[n];
}
int main(){
int n;
scanf("%d",&n);
fib(n);
}