導航:首頁 > 編程語言 > 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遞歸跳出相關的資料

熱點內容
ccs編譯程序一直彈debug 瀏覽:47
安卓手機如何調白圖片 瀏覽:355
什麼牌子的安卓平板最好用 瀏覽:172
keil編譯顯示目標沒有建立 瀏覽:793
安卓收銀機如何安裝列印機驅動 瀏覽:820
電動車什麼app上買 瀏覽:531
墨西哥pdf 瀏覽:712
python圖形界面編程 瀏覽:958
暫停加密服務 瀏覽:278
易語言編程系統下載 瀏覽:55
linux創建資料庫命令 瀏覽:927
佛系程序員的道路 瀏覽:409
安卓手機怎麼玩天天麻將 瀏覽:218
程序員高血脂 瀏覽:265
基於單片機的盲人探路器 瀏覽:648
少女心貼圖app哪個好 瀏覽:528
企業員工系統源碼 瀏覽:755
java第三方jar 瀏覽:274
安卓為什麼不能掛外服下游戲 瀏覽:249
怎麼能把我的世界伺服器弄卡 瀏覽:332