抱歉,我想不出一个好头衔。
我正在进行与信息通讯技术相关的练习并遇到这个问题:
为n = 1,2,3,4和5
计算alg a(n)
和alg b(n)
(a)
alg_a(n):result
if n > 1 then
return(alg_a(n−1)+alg_a(n−1))
else return(1)
(b)
alg_b(n):result
if n > 1 then
return(2 · alg_b(n−1))
else return(1)
首先,第1行的代码是什么(alg_a(n):result
)?
答:这个问题要求我计算alg a(n),所以我可以说我插入1 if n > 1 --> no --> return 1
。但是当我插入n = 2时会发生什么。
感谢任何帮助,
谢谢!
答案 0 :(得分:6)
算法alg_a(n)计算2 ^(n-1),alg_b(n)做同样的事情。
Theese是recursive函数。例如,4 alg_a返回:
alg_a(4)=
alg_a(3)+ alg_a(3)=
alg_a(2)+ alg_a(2)+ alg_a(2)+ alg_a(2)=
alg_a(1)+ alg_a(1)+ alg_a(1)+ alg_a(1)+ alg_a(1)+ alg_a(1)+ alg_a(1)+ alg_a(1)= 8
答案 1 :(得分:3)
这不是代码,它是某种形式的伪代码。工作“结果”只意味着以下是该功能的结果。因此,alg_a(1)
为您提供1
的结果,而alg_a(2)
为您提供结果(alg_a(1) + alg_a(1))
,即2
。继续得到你的其他答案。
在这种情况下的问题并不是要求比数字答案更复杂的东西。