因此,在教程的帮助下,我编写了这个简单的代码。通过它我不太确定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;
}
}
最佳答案
我自己想知道它,知道它的最好方法是让程序找出来,所以我修改了代码以查看实际发生的情况。这是我修改过的代码(我用您的母语评论并写了代码,我认为我们生活在同一个国家/地区。
public class EnkelRekursjon1 {
private static String funksjonNavn= "";
private static int resultat=0;
public static void main(String[] args) {
int tall = 3;
System.out.print(tall+"! = "+faktor(3)); // resultat printes etter rekursjon
}
private static int faktor(int tall){
funksjonNavn="Faktor("+tall+")";
System.out.println(tall);
//finn hvilken funksjon vi er.
System.out.println("Funksjonen kaller "+ funksjonNavn);
if (tall != 1){
resultat= faktor(tall - 1)*tall;
System.out.println("Reusltatet er "+ resultat);
return resultat;
}
System.out.println("-------------------------------");
//finn resultat for hver "rekursjon"
System.out.println("Reusltatet er "+ (resultat+1));
//blir 1* 0 her tror jeg, så funksjonen returnerer 1 istedenfor 0
return 1;
}
}
结果如下:
如果要手动评估它,它将看起来像这样。
faktor(5) = faktor(4)*5
我们将得到faktor(4)的值,就像这样:
faktor(4) = faktor(3)*4
我们将对其余的“ faktor(int tall)”执行相同的操作,直到条件为假。
faktor(3) = faktor(2)*3
faktor(2) = faktor(1)*2
faktor(1)将返回1,因为tall等于1(因此条件为假)。用1代替faktor(1)
我们得到:
faktor(2) = 1*2 =2
将faktor(2)替换为2,我们得到
faktor(3)= 2 * 3 = 6
用6代替faktor(3),我们得到
faktor(4)= 6*4 = 24
最终,我们得到:
faktor(5) = 24*5 = 120
我希望这次足够清楚
我希望我已经回答了你的问题。请随时询问您是否还有其他问题。海因芬达格:)