簡體   English   中英

Java在進入方法的第一次遞歸之前,如何輸出方法變量的初始值?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM