递归,动态规划求斐波那契数列—C++实现

递归,动态规划求斐波那契数列—C++实现

程序

#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);
    }
}

//1 1 2 3 5 8 13 21 34 55
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];
}

运行结果

在这里插入图片描述

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值