放苹果(递归)

题目:

解析:

打个比方,5个苹果和5个盘子,列出两个极端的:各个盘子放一个和最后一个盘子放5个

这两个极端的就可以作为起始和结束

中间就一直放苹果减盘子数往前推就行

这样一来就简单了,上代码:

复制代码
#include<bits/stdc++.h>
using namespace std;
int a(int m,int n){
    if(n==1||n==0){
        return 1;//结束条件,所有的苹果都放到一个盘子里时 
    }else if(m<n){
        return a(m,m);//如果苹果数< 盘子数那么就会有一些盘子会空着,把那些盘子给去掉 
    }else{
        return a(m-n,n)/*放苹果*/+a(m,n-1)/*逐渐去掉盘子往前推*/;
    } 
}
int main(){
    int m,n;
    cin>>m>>n;
    cout<<a(m,n);
    return 0;
}
复制代码

 

posted @   陈瑞淞  阅读(83)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~
点击右上角即可分享
微信分享提示