※ 引述《skywillnosky (Alfred)》之铭言:
: 题目是这样(虽然大家可能都看过了,不过我还是大略抄一遍...)
: 两项是系数的组合递回算法如下
: C(r,n) =
: 0, 若 r > n
: 1, 若 n==r
: 1, 若 r==0
: C(n-1,r)+C(n-1,r-1), 其他
: 1. 写出递回函数程式
: 2. 画出输入为 n=5, r=3时,递回呼叫的二元树
: 3. 承2. 求最后回传值
: 4. 承2. 共呼叫递回几次
: 1.
: 我是用C++写的
: int func(int r, int n)
: {
: if(r > n)
: return 0;
: if(n==r)
: return 1;
: if(r==0)
: return 1;
: return (func((n - 1), r) + func((n - 1), (r - 1)));
: }
: 2.
: (3, 5)
: / \
: (4, 3) (4, 2)
: ===> (4, 3) ===> 4 > 3 ===> 回传0
: ===> (4, 2) ===> 4 > 2 ===> 回传0
: 3. 0+0 = 0
: 4.我其实不太确定这叫一次还是两次,所以我写2
: 这样也有错吗?感觉答案太简单了?
: 祝各位金榜题名
不好意思,因为此标题太久了,有些问题没有得到讨论,因此把它浮出水面。
我的问题如下:
gunhello: 呼叫函数次数,和递回呼叫次数是一样的吗?困惑中......
gunhello: 个人认为呼叫函数19次,但递回呼叫18次。请指教。
希望没有违反版规,谢谢各位。