int raisingTo(int base, unsigned int exponent)
{
if (exponent == 0)
return 1;
else
return base * raisingTo(base, exponent - 1);
}
我编写了这段代码,用于使用main()
中的值传递的值将指数提升到其基值。此函数使用递归来执行此操作。有人可以解释每次调用自身时它是如何返回值的吗?我需要详细解释这段代码。
答案 0 :(得分:4)
我们使用等式:x^n = x * x^(n-1)
,对于所有实数都是如此。
因此我们使用它来创建递归函数。递归的底部是当指数== 0时。
例如2^4 = 2 * 2^3
; 2^3 = 2 * 2^2
; 2^2 = 2 * 2^1
; 2^1 = 2 * 2^0
和2^0 = 1
。
答案 1 :(得分:0)
最好通过手动进行迭代来说明(如评论中所示)。假设我们有base = 2
和exponent = 2
。
2 * (whatever function yields when called with the arguments 2 and (2 - 1), which is 1)
。2 * (whatever the next iteration with arguments 2 and 0 returns)
。现在我们有完整的链2 * 2 * 1,因此计算结果是4。