放苹果(递归)
题目:
解析:
打个比方,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; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~