簡體   English   中英

遞歸堆棧溢出錯誤Java

[英]Recursion Stack Overflow Error Java

嘗試打印正整數n的前m倍時,遞歸方法中的堆棧溢出錯誤。 我如何解決它? 以下代碼在邏輯上已經正確:

  import java.util.Scanner;
  public class Exercise3
  {
  public static void main (String args[])
  {
  Scanner keyboard = new Scanner(System.in);
  int n, m;
  System.out.println("Please enter values of n and m: ");
  n = keyboard.nextInt();
  m = keyboard.nextInt();
  // logic of code explained above
  for(int i = (m -(m - 1)); i <= m; i++)
  {
     System.out.print(multiple(n * i) + ",");
  }

  }
  // Now Write the Recursive method
  public static int multiple(int n)
  {
     if(n == 0)
        return 1;
      else 
       return multiple(n);
  }

}

這是非常不好的遞歸用法

public static int multiple(int n){ // once come into this method will never exit
  return multiple(n); // again and again call multiple
}

此遞歸方法沒有退出條件。 您需要考慮退出條件以終止此遞歸調用。

編輯:用於您的編輯:

public static int multiple(int n) { // inside this method n is never change
    if (n == 0)
        return 1;
    else
        return multiple(n);// still no termination for the recursion call      
}

您可能想這樣做:

for(int i = (m -(m - 1)); i <= m; i++)
    {
      System.out.print(multiple(n,i)+",");  // call like this in you main method
    }

這是遞歸函數:

 public static int multiple(int m,int n) {

        if (n == 1)
            return m;
        else
            return  m+multiple(m,n-1);


    }
       import java.util.Scanner;
       public class Exercise3
       {
          public static void main (String args[])
          {
           Scanner keyboard = new Scanner(System.in);
             int n, m;
            System.out.println("Please enter values of n and m: ");
            n = keyboard.nextInt();
            m = keyboard.nextInt();
            // logic of code explained above
            for(int i = (m -(m - 1)); i <= m; i++)
            {
            System.out.print(n * i + ",");
            }
           }    

              }

//使用n = 2和m = 5來查看2的前5個倍數。我需要遞歸方法來執行相同的操作。 這是迭代的

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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