经典递归-取球问题

问题描述:现假设有n个大小相同的球,从中取m个球(不放回)。问总共有多少种取法?

代码:public class HHH
{
public static int f(int n , int m)
{
if(n<m) return 0;
if(n==m) return 1;
if(m==0) return 1; 

return f(n-1,m-1) + f(n-1,m);
}
public static void main(String[] args) {
    
int k = f(n,m);
System.out.println(k);

  }
}

思路: 现假设有一个特殊的球A,与其他球完全相同。

若已经取了这个特殊的A,则取法为f(n-1,m-1)

若没取A,则取法为f(n-1,m)

溢出栈注意:递归的跳出条件考虑不充分。如n=3,m=4。

    原文作者: 汉诺塔问题
    原文地址: https://blog.csdn.net/kansas_lh/article/details/54428376
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞