我想在C中写一个递归函数来取3的值到另一个数的幂。例如,如果我输入4,程序将返回值81.下面的代码是问题的答案。但我无法清楚地理解代码如何解决问题。我的意思是,当4传递给函数时,函数体中的前3行将被忽略,直接跳入“//这行”。那么它是如何从程序返回数字81的。该函数再次以3通过自我调用? 3 * three_power(3)?我无法清楚地理解这一点。有人可以解释吗?对不起,因为这是一个愚蠢的问题,我是新来的C.C中的递归函数取3到另一个数的幂
#include <stdio.h>
int three_power(int power);
int main(){
int a=4;
int b=9;
printf("\n3 to the power of %d is %d", a, three_power(a));
printf("\n3 to the power of %d is %d", b, three_power(b));
return 0;
}
int three_power(int power){
if (power < 1){
return(1);
} else
return (3* three_power(power-1)); //This line
}
这是你从调试器中看到的吗?程序并不是真正跳过前三行,只是它们已经被优化,调试器无法正确地跟踪它们。尝试在没有优化的情况下重新编译,然后再启动调试会话,您甚至会看到前三行...... –
'return'不是一个函数,而是一个声明。你不应该在结果周围添加括号。他们不是陈述的一部分,但表达和不必要的。 – Olaf
“*要理解递归,您需要了解递归... *”;-) – alk