所以我在教程的帮助下制作了这个简单的代码.经历它我不太确定会发生什么return faktor(tall-1)*tall
.
在return语句中,该方法调用自身并返回一个值.先发生什么事?它首先调用自身,还是首先返回值,或者它们是否同时发生?
当它返回值时会发生什么?
package enkelrekursjon1;
public class Enkelrekursjon1 {
public static void main(String[] args) {
System.out.print(faktor(3));
}
private static int faktor(int tall){
System.out.print(tall);
if (tall != 1){
return faktor(tall - 1)*tall;
}
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
它的工作方式与返回值的返回语句始终有效:
faktor(tall - 1) * tall
)在评估表达式之前它不可能返回,因为没有值返回.
所以在你的情况下,如果你有电话,faktor(5)
你最终会得到一个调用堆栈:
faktor(5)
-> calls faktor(4)
-> calls faktor(3)
-> calls faktor(2)
-> calls faktor(1)
-> returns 1
-> returns 1 * 2 (i.e. 2)
-> returns 2 * 3 (i.e. 6)
-> returns 6 * 4 (i.e. 24)
-> returns 24 * 5 (i.e. 120)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
330 次 |
最近记录: |