给定以下函数定义,调用dub(2.0, 4)
返回什么值?
double dub(double z, int n) {
if (z == 0) return z;
return 2 * dub(z, n-1);
}
答案 0 :(得分:0)
通话
dub(2.0, 4)
返回的是什么值?
它不会返回,更不用说返回任何值。
原因是z
永远不会成为0
,因此您的基本情况永远不会成为真,因此函数永远不会返回。所以它被无数次调用,你已经看到了你的标题所说的。递归函数在到达基本情况时结束,在您的情况下,永远不会达到基本情况。
阅读递归:
这可能是你最初想要的:
double dub(double z, int n) {
if (n == 0) return z; // checking if n is 0, instead of z
return 2 * dub(z, n-1);
}
答案 1 :(得分:0)
你的问题不是很明确,你问这个函数为什么导致无限递归?"如果是这样,原因是因为您在边缘条件中检查错误的值。该函数应该写成
double dub(double z, int n) {
if (n == 0) return z;
return 2 * dub(z, n-1);
}
noitice条件已更改为n == 0
而不是z == 0