[英]Java How do I output the initial value of a method's variable before it enters the first recursion of the method?
關於如何打印經典階乘遞歸中使用的初始變量的任何想法嗎? 這就是我所擁有的。
public class factorial{
public static void main(String[] args){
System.out.println("Output:" + initialN(factorial(4)));
System.out.println("Answer:24");
}
public static int factorial(int n){
if(n == 1){
return 1;
}
else{
return n*(n-1);
}
}
public static int initialN(int n){
int init = n;
System.out.println("N:" + init); return init;
}
}
現在,我的輸出如下所示:
N:24
Output:24
Answer:24
但是我試圖讓它只顯示n在進入階乘方法的第二次迭代之前的初始值。 所以N應該顯示為4,而不是24。預先感謝。
您只需要更改此行:
System.out.println("Output:" + factorial(initialN(4)));
您應該在階乘內部調用initialN()
,因為方法是從內部執行然后向外執行的。
附帶說明一下,我會這樣寫:
public static int factorial3(int num){
if(num == 0)
return 1;
else{
if(i==0) \\ i is global variable initialized to zero
System.out.println("N:" + num);
i++;
return num * factorial3(num-1);
}
}
並這樣稱呼它:
System.out.println(factorial3(4));
我知道了。 如果從另一個方法調用遞歸方法,則可以打印初始變量。 這是我的解決方案。 我很想看看是否有人有一個更簡單的解決方案。
public class factorial{
public static void main(String[] args){
System.out.println("Output:" + (factorial(3))); System.out.println("Answer:6");
System.out.println("Output:" + (factorial(4))); System.out.println("Answer:24");
System.out.print("--------------------");
}
public static int factorial(int n){
System.out.println("--------------------\nN:" + n);
return factorial2(n);
}
public static int factorial2(int n){
if(n == 1){
return 1;
}
else{
return n*factorial2(n-1);
}
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.