程序
#include<bits/stdc++.h>
using namespace std;
int DG(int n);
int DP(int n);
int a[1000];
static int count_DG = 0;
static int count_DP = 0;
int main(){
int n;
scanf("%d",&n);
int ans_DG = 0,ans_DP = 0;
ans_DG = DG(n);
ans_DP = DP(n);
printf("递归:%d\t递归次数:%d\n",ans_DG,count_DG);
printf("动态规划:%d\t循环次数:%d",ans_DP,count_DP);
}
int DG(int n){
count_DG++;
if (n==1||n==2){
return 1;
}
else{
return DG(n-1)+DG(n-2);
}
}
int DP(int n){
a[0] = a[1] = 1;
count_DP = 2;
for(int i=2;i<n;i++){
a[i] = a[i-1]+a[i-2];
count_DP++;
}
return a[n-1];
}
运行结果
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/b6f716c0707ec64a059a24936fc4bc50.png)