Recursion 递归2练习中使用的乘法数。我们找到了两个不同的答案

Recursion 递归2练习中使用的乘法数。我们找到了两个不同的答案,recursion,discrete-mathematics,Recursion,Discrete Mathematics,首先让我说这是我的离散结构类的一个问题。我不确定我应该把它贴在这里还是数学溢出 练习24中算法使用的乘法数与算法2用于评估的乘法数相比如何 a^2^n?需要明确的是:评估的顺序是2^n;然后将a提高到该功率 首先让我陈述练习24和算法2 ex 24:设计一个递归算法来找到^2^n,其中a是一个实数,n是一个正整数。[提示:使用等式a^2^(n+1)=(a^2^n)^2。] 答案是: procedure twopower(n: positive integer, a: real number) i

首先让我说这是我的离散结构类的一个问题。我不确定我应该把它贴在这里还是数学溢出

练习24中算法使用的乘法数与算法2用于评估的乘法数相比如何 a^2^n?需要明确的是:评估的顺序是2^n;然后将a提高到该功率

首先让我陈述练习24和算法2

ex 24:设计一个递归算法来找到^2^n,其中a是一个实数,n是一个正整数。[提示:使用等式a^2^(n+1)=(a^2^n)^2。]

答案是:

procedure twopower(n: positive integer, a: real number)
if n=1 return a^2
else
    return twopower(n-1, a)^2
算法2计算A^n的递归算法

{输出是^n}

我从Chegg教科书解决方案和解决方案手册中找到了两种不同的解决方案。我不确定作者是如何得出每一个结论的,我也不确定他们是否都是正确的。 > 算法2使用2^n乘以a,乘积a^2^n中a的每个因子一个。练习24中的算法基于平方运算,仅使用n乘法(每个乘法本身就是一个数字的乘法)。例如,要计算a^2^4=a^16,此算法将计算a*a=a^2(一次乘法),然后计算a^2。^2=^4(第二次乘法),然后是^4。a^4=作为(第三个),最后作为。as=a^16(第四次乘法)。(解决方案手册) >


ex 24的Chegg solutions状态使用2^n乘法;对于算法2,它声明使用的乘法数为n。提前感谢您的帮助。

当使用适当的参数调用时,这两种解决方案都是正确的。第一个计算a^2^n给定an。它通过将数字n乘以平方来实现这一点

算法2可以返回相同的结果,但必须使用a2^n调用。是的,它执行n乘法——但它与n不同


您需要跟踪操作吗?如果是这样,只需将这两种算法转换为您最喜欢的语言,在每种算法中插入一条跟踪打印语句,然后运行它们

我喜欢信息格式正确。“被al gorithm使用”-“al gorithm”是什么?我知道算法,但我从没听说过“阿尔·戈里希姆”。什么是“芬达”?为什么你的部分信息是黄色的?你不在乎那些会读你的问题的人,为什么我们要费心回答呢?不知道为什么会这样,这是我第二次发帖了。话虽如此,我在这里还是相当新的。我已经在chegg上发布了这条消息,结果很好。我在这里转载使用复制和粘贴,结果很糟糕。我知道“algorithm”的格式不正确,但我相信你知道它的意思是算法。现在我提到我是新来的,这取决于他们是否愿意帮助。真有趣,人们总是热衷于批评而不是帮助。谢谢你,这帮了大忙。我想这两个答案可能都是正确的。很高兴能帮上忙。当你得到一个解决方案时,请记住投票给有用的东西,并接受你最喜欢的答案(即使你必须自己写),这样堆栈溢出可以正确地存档问题。
procedure power (a: nonzero real number, n: nonnegative integer)
if n= 0 then return 1
else return a * power (a, n−1)