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

熱點內容
壓縮文件的用法 瀏覽:32
如何用瀏覽器訪問伺服器地址 瀏覽:205
soft編譯器 瀏覽:113
三軸車床的編程指令 瀏覽:71
天生敏感pdf 瀏覽:565
西瓜星球伺服器怎麼刷鑽石 瀏覽:838
php生成chm 瀏覽:658
解釋程序和編譯程序產生目標嗎 瀏覽:609
dos命令rem 瀏覽:371
plc程序員水平高低 瀏覽:854
linux伺服器linux雲 瀏覽:373
大腳重置命令 瀏覽:130
app怎麼引導頁面 瀏覽:946
pdf轉換成w0rd 瀏覽:569
壓縮空氣屬於什麼能量類型 瀏覽:881
上海交警app怎麼付費 瀏覽:601
暗黑2怎麼切換伺服器 瀏覽:20
安卓如何玩港服游戲 瀏覽:350
程序員如何換個城市生活 瀏覽:147
JS開發PDF 瀏覽:286