私は中間試験の勉強をしていますが、練習問題の 1 つに次のような質問があります。
入力整数として a>=1 を取る再帰的な疑似アルゴリズム Milk(a) を考えてみましょう。
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 のせいで、再帰関数 MILK(b); への入力に対して m の可能性がどんどん小さくなり、最終的に条件 a = 1; を満たす 1 に達すると思います。したがって、クッキーを食べて、アルゴリズムを終了します。
2) M(a) を、MILK(a) を実行しているときに飲むコップ 1 杯の牛乳の量とします。M(a) の正確な値を決定する
これについては、実行するたびに「a」が入力であり、すべての入力を合計すると合計が得られるため、M(a) = a + a になると思います。
私の答えはどのように見えますか? または、これは完全に間違っています。ありがとうございました!