我正在为我的期中考试而学习,其中一个练习题是:
考虑递归伪算法 Milk(a),它将 a>=1 作为输入整数。
MILK(a)
if a = 1;
then eat cookie;
else drink glass of milk;
select a random integer b with 1 <= b <= a-1
MILK(b);
MILK(a-b);
endif
1) 解释为什么对于任何整数 a>= 1 算法 MILK(a) 终止
我认为由于 n-1,m 的可能性对于递归函数 MILK(b); 的输入变得越来越小,最终达到满足条件 a = 1; 的 1; 因此吃饼干并终止算法。
2) 让 M(a) 是您在运行 MILK(a) 时喝的牛奶量。确定 M(a) 的准确值
对于这个,我假设它将是 M(a) = a + a,因为每次运行它时,'a' 都是输入,并且将每个输入加在一起会给你总数。
我的答案看起来如何?或者这完全不正确。谢谢!