東北大学 工学研究科 電気・情報系 2014年8月実施 専門科目 問題5 計算機2
Author
祭音Myyura (co-authored with GPT 5.6 SOL)
Description
日本語原題
Fig. 5 に示す再帰関数 f を考える。ここで,関数 mod(x,y) は整数 x を整数 y で割った余りを返し,式 “if e1=e2 then e3 else e4” の値は,e1 の値が e2 の値に等しければ e3 の値に,そうでなければ e4 の値に等しい。また,入力 p と q(p≥q)は非負の整数であると仮定する。
(1) f(901,255) を計算せよ。計算の過程も示すこと。
(2) 任意の非負の整数 p と q(p≥q)に対して,f(p,q) の計算が停止することを示せ。
(3) f(p,q) を計算する際,n 回目の再帰関数呼び出しにおける q の値を qn で表す。n 回目(n≥3)の再帰関数呼び出しが行われた場合,qn<qn−2/2 が成り立つことを示せ。
(4) 問(3)の関係を用いて,f(p,q)(q>0)を計算するための再帰関数呼び出しの回数は O(logq) であることを示せ。
f(p,q) =
if q=0 then p
else f(q,mod(p,q))
题目描述
给定非负整数 p≥q,函数
f(p, q) =
if q == 0 then p
else f(q, mod(p, q))
其中 mod 为余数。
- 计算 f(901,255),写出过程。
- 证明任意允许输入均使计算终止。
- 令第 n 次调用的第二参数为 qn,证明只要第 n 次调用发生且 n≥3,就有 qn<qn−2/2。
- 利用上式证明 q>0 时的调用次数为 O(logq)。
Kai
(1)
f(901,255)=f(255,136)=f(136,119)=f(119,17)=f(17,0)=17.
(2)
当第二参数非零时,下一次调用的第二参数满足 0≤pmodq<q。非负整数不能无限严格递减,故必到达 q=0 而终止。
(3)
设 a=qn−2,b=qn−1,c=qn,则 a=kb+c,其中 k≥1 且 0≤c<b。
若 b≤a/2,则 c<b≤a/2;若 b>a/2,则 k=1,从而 c=a−b<a/2。两种情况均得 qn<qn−2/2。
(4)
每两次递归,正的第二参数至少减半。至多经过 2⌈log2q⌉+O(1) 次调用便到达 0,故调用次数为 O(logq)(包含 q=1 可写 O(1+logq))。