欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

递归放苹果

程序员文章站 2024-03-18 09:55:52
...

放苹果 递归法

递归放苹果
编写方法:c++
注释:
递归放苹果
分情况,当盘子数大于苹果数时,则f(i,k)=f(i,i),当苹果数大于盘子数时,总方法就是有盘子为空的方法+没盘子为空的方法,有盘子为空,则每次是盘子个数减一,苹果数不变,没盘子为空的方法,就是每次使苹果数没次减掉盘子数。边界条件:当苹果数为0,盘子数不为0时,则只有一种方法就是不放,所以return 1,而当盘子数为0,苹果数不为0时,有苹果但时没有盘子可放,所以只能返回0,即return 0。

#include <iostream>

using namespace std;

int f(int m,int n){
    if(n>m)
        return f(m,m);
    if(m==0)
        return 1;
    if(n==0)
        return 0;
    return f(m,n-1)+f(m-n,n);
}
int main()
{
    int t,m,n;
    cin>>t;
    while(t--){
        cin>>m>>n;
        cout<<f(m,n)<<endl;
    }
    return 0;
}