首先,这不是功课 - 只是我的好奇心,因为我出于某种原因无法理解它并解决它。我总是想出这些愚蠢的事情,当我无法解决它时,它会让我感到厌烦。
代码示例在C#中,但解决方案不必是任何特定的编程语言。
long powerofnum(short num, long powerof)
{
return powerofnum2(num, powerof, powerof);
}
long powerofnum2(short num, long powerof, long holder)
{
if (num == 1)
return powerof;
else
{
return powerof = powerofnum2(num - 1, holder * powerof, holder);
}
}
如你所见,我有两种方法。我调用powerofnum(value,powerofvalue),然后使用powerofvalue在第三个参数中调用下一个方法作为占位符,以便通过递归记住原始的powerof值。
我想要完成的只是一种方法。 我知道我可以在第一个方法中使用powerof值声明一个变量来记住它,然后从0迭代到num的值。但由于这是一个理论问题,我希望它以递归方式完成。
我也可以在第一个方法中使用第三个参数调用any来存储值,就像我在第一个调用的第二个方法中那样,但看起来真的很愚蠢。你为什么要写两次看似相同的参数?
简要说明规则:
无论如何,我很欣赏一个干净的解决方案。
祝你好运:)答案 0 :(得分:3)
伪代码:
// power(x, y) == x^y, only works for positive integer y
function power(x, y) {
return y <= 1 ? x : x * power(x, y - 1);
}