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

熱點內容
php獨立運行 瀏覽:530
手機sh執行命令 瀏覽:727
雲伺服器的角色 瀏覽:733
單片機頻率比例 瀏覽:840
我的世界伺服器如何關閉正版驗證 瀏覽:504
如何查roid伺服器上的 瀏覽:130
安卓手機主板如何撬晶元不掉電 瀏覽:249
php各個框架的優缺點 瀏覽:101
php1100生成數組 瀏覽:359
以後做平面設計好還是程序員好 瀏覽:552
雲伺服器應用管理 瀏覽:438
飢荒雲伺服器搭建過程 瀏覽:186
可編程式控制制器優點 瀏覽:99
壓縮垃圾車說明書 瀏覽:28
五輪書pdf 瀏覽:802
單片機定時流水中斷系統流水燈 瀏覽:701
u8如何連接伺服器配置 瀏覽:66
動力在於緩解壓力 瀏覽:867
報考科一用什麼app 瀏覽:346
knn人臉識別演算法 瀏覽:431