在這段代碼中,它是一個遞回列印元素 1 到 5 的程式,當我使用n--而不是n-1,我得到一個堆疊溢位錯誤。而當n-1使用時,代碼運行良好。在這段代碼中不應該n--和n-1作業一樣嗎?
//when using n--
class PrintElements1to5
{
public static void main(String[] args)
{
recursivePrint(5);
}
static void recursivePrint(int n)
{
if(n<1)
return;
recursivePrint(n--);
System.out.print(n " ");
}
}
輸出:
Exception in thread "main" java.lang.StackOverflowError
//when using n=n-1
class PrintElements1to5
{
public static void main(String[] args)
{
recursivePrint(5);
}
static void recursivePrint(int n)
{
if(n<1)
return;
recursivePrint(n-1);
System.out.print(n " ");
}
}
輸出:
1 2 3 4 5
uj5u.com熱心網友回復:
n--回傳nfirst 的值,然后回傳 decrement n。所以在你的情況下,它變成了一個無限回圈,因為n它永遠不會改變。您可以先使用--nwhich 遞減n,然后回傳 的值n。讓我們舉一個更簡單的例子。
int x = 3;
System.out.println(x - 1); // prints 2, x is still 3
System.out.println(x--); // prints 3, x becomes 2
System.out.println(--x); // prints 1, x becomes 1
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/496374.html
上一篇:將Magento2版本2.4.2更新到2.4.3問題
下一篇:將二叉樹展平為鏈表的遞回解決方案
