導航:首頁 > 編程語言 > java遞歸跳出

java遞歸跳出

發布時間:2023-08-13 01:23:56

java怎麼退出所有遞歸

比如這是一個遞歸:x0dx0apublic int a(int p){x0dx0a ...x0dx0ax0dx0a p--;x0dx0ax0dx0a a(p);x0dx0ax0dx0a ...x0dx0ax0dx0a}x0dx0ax0dx0a那麼我想要退出遞歸時:x0dx0apublic int a(int p){x0dx0a ...x0dx0ax0dx0a if(p == 0){x0dx0ax0dx0a throw new Exception("blahblah"); //拋出異常x0dx0ax0dx0a }x0dx0ax0dx0a p--;x0dx0ax0dx0a a(p);x0dx0ax0dx0a ...x0dx0ax0dx0a}x0dx0a調用這個遞歸時:x0dx0apublic static void main(String[] args){x0dx0a try{x0dx0a a(2);x0dx0ax0dx0a }catch(Exception e){x0dx0a //拋出異常後執行x0dx0ax0dx0a }x0dx0ax0dx0a}x0dx0a簡單來說就是拋出異常後會執行catch內的語句,與遞歸本身的返回值無關。

❷ java怎麼退出所有遞歸

比如這是一個遞歸:
public int a(int p){
...

p--;

a(p);

...

}

那麼我想要退出遞歸時:
public int a(int p){
...

if(p == 0){

throw new Exception("blahblah"); //拋出異常

}

p--;

a(p);

...

}
調用這個遞歸時:
public static void main(String[] args){
try{
a(2);

}catch(Exception e){
//拋出異常後執行

}

}
簡單來說就是拋出異常後會執行catch內的語句,與遞歸本身的返回值無關。

❸ 遞歸累加時,出java.lang.StackOverflowError了,怎麼辦

這么遞歸下去肯定會棧溢出。
如果單純的想要1-10000的累加至於這么麻煩么?

累加的效率問題:
目前有下面兩種方法:
方法一:
long sum = 0;
for(int i = 0;i < value;i++)
{
sum += i;
}

方法二:
long sum = 0;
sum = (value + 1) * value / 2;

當value值等於10000,使用方法一,運行10次有4次會產生15毫秒左右耗時,使用方法二,運行10次無耗時產生。
當value值等於100000,使用方法一,運行10次有5次會產生15毫秒左右耗時,使用方法二,運行10次無耗時產生。
當value值等於1000000,使用方法一,運行10次有10次會產生31毫秒左右耗時,使用方法二,運行10次無耗時產生。
......
以此類推,方法一累加計數的效率和方法二相比,隨著value值的級數遞增,效率相應下降。

測試代碼:
public class SimpleArithmetic
{
public static void main(String[] args)
{
SimpleArithmetic sa = new SimpleArithmetic();
long sum = 0;
long time = 0;
long curTime = System.currentTimeMillis();
System.out.println("curTime=" + curTime);

//sum = sa.getSumCycle(1000000);
sum = sa.getSumNotCycle(1000000);
System.out.println(sum);

long endTime = System.currentTimeMillis();
System.out.println("endTime=" + endTime);

time = endTime - curTime;
System.out.println(time);
}

private long getSumCycle(long value)
{
long sum = 0;

for(long i = 1;i <= value;i++)
{
sum += i;
}

return sum;
}

private long getSumNotCycle(long value)
{
long sum = 0;
sum = (value + 1) * value / 2;
return sum;
}
}

❹ java如何一次性退出所有遞歸

在內的循環里把外層循環的條件都破掉就可以了啊 ,java好像是不帶標記的循環

閱讀全文

與java遞歸跳出相關的資料

熱點內容
少女心貼圖app哪個好 瀏覽:528
企業員工系統源碼 瀏覽:755
java第三方jar 瀏覽:274
安卓為什麼不能掛外服下游戲 瀏覽:249
怎麼能把我的世界伺服器弄卡 瀏覽:332
php網站技術架構圖 瀏覽:601
java對象內存大小 瀏覽:514
stm8s單片機選型 瀏覽:46
pda在app里是什麼意思 瀏覽:374
廣州市的加密軟體公司 瀏覽:662
住賓館有什麼app 瀏覽:305
伺服器工作站中端有什麼異同 瀏覽:213
linux命令的語法 瀏覽:737
mc夢想之國伺服器地址 瀏覽:843
mac開機啟動命令 瀏覽:229
jspoa源碼下載 瀏覽:608
簡單自動化命令 瀏覽:895
linux攝像頭驅動視頻 瀏覽:484
怎麼獲取別人網站源碼 瀏覽:832
安卓版zip文件解壓破解密碼 瀏覽:946