袋鼠蹦蹦跳问题

#include <iostream>

using namespace std;
//袋鼠一次能跳动1米或者三米,在给定距离的情况下求方法数
//第一种方法叫做递归 第二种方法叫做递推利用一维数组保存计算当前结果所需要的前面的结果
class KangarooRun{
    private:
        int distance;
        int result[50];
    //这些函数不能写成私有的
    public:
    KangarooRun(int distance){
        this->distance = distance;
    }

    int calculate(){
        result[1] = 1;
        result[2] = 1;
        result[3] = 2;
        for(int i=4;i<=distance;i++){
            result[i] = result[i-1]+result[i-3];
        }
        return result[distance];
    }

    int calculate2(int distance){
        if(distance==1||distance==2) return 1;
        else  if(distance==3) return 2;
        else return calculate2(distance-1)+calculate2(distance-3);
    }

};


int main()
{
    int  distance;
    cout<<"请输入距离distance:";
    cin>>distance;
    KangarooRun Test(distance);
    cout <<Test.calculate()<< endl<<Test.calculate2(distance)<<endl;
    return 0;
}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值