博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
第二讲 经典的递归问题1
阅读量:6565 次
发布时间:2019-06-24

本文共 682 字,大约阅读时间需要 2 分钟。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
//在n个球中,任取m个(不放回),求有多少种取法
#include <stdio.h>
int 
fun(
int 
n, 
int 
m) {
    
if
(n<m) 
return 
0;
    
if
(n==m) 
return 
1;
    
if
(m>0)
    
return 
fun(n-1, m-1) + fun(n-1, m);
}
int 
main(
void
)
{
    
printf
(
"%d\n"
, fun(3, 2));
    
return 
0;
}
/*=======================
2015年12月15日22:28:40
高中的排列组合中有这个公式的
n中取m = n-1中取m-1 + n-1中取m
如何理解呢?
n中取m个,在这些组合中                
(比如abc取两个球,在这些组合中ab ac bc中)
 
可以分解成两种事件,约定有一个特殊球   
(约定为a球)
1.取特殊球的所有组合  
  
即可以把特殊球理解成标签一样,撕掉 特殊球消失 不含有特殊球 就是总球n-1,取m-1个 分别与a球组合
  
(b c中取1个构成ab, ac)
2.不取特殊球的所有组合 
  
即这些组合不含有特殊球 总球n-1,取m个球 
  
(bc中取两个构成bc)
 
2是1的对立事件
这样分解问题逐层递归就可以解决这个问题了。
    

 

转载于:https://www.cnblogs.com/startnow/p/5049850.html

你可能感兴趣的文章
Map集合案例
查看>>
《FPGA全程进阶---实战演练》第十一章 VGA五彩缤纷
查看>>
第七次课程作业
查看>>
C++ 文本查询2.0(逻辑查询)
查看>>
Objective-C学习总结-13协议1
查看>>
web学习方向
查看>>
A*算法实现
查看>>
第一周 从C走进C++ 002 命令行参数
查看>>
【java】itext pdf 分页
查看>>
看看这个电脑的配置
查看>>
[转]【NoSQL】NoSQL入门级资料整理(CAP原理、最终一致性)
查看>>
RequireJS进阶(二)
查看>>
我设计的网站的分布式架构
查看>>
linux extract rar files
查看>>
Knockout.Js官网学习(监控属性Observables)
查看>>
ORA-12514: TNS: 监听程序当前无法识别连接描述符中请求的服务解决
查看>>
azure之MSSQL服务性能测试
查看>>
Android BitmapFactory.Options
查看>>
前端构建:Less入了个门
查看>>
phonegap(cordova) 自己定义插件代码篇(三)----支付宝支付工具整合
查看>>