public
class
main
public
static
intsplit
(int number)
return number;
}}
輸出:12136
聲名:滿足條件呼叫兩次split方法,
將分別用兩種方法呼叫棧作為基準
無論是否滿足if條件必被呼叫&方法呼叫棧
規律:split(number 永遠會執行,直到return)
即a: split 12、6、3、1 永遠會觸發 返回12情況下不進行展示 那麼必有返回值如下順序
1 3 6
當滿足3 的時候 程式優先走 split((number + 1) / 2)
即有 b: split 4、2、1 對應返回值順序如下
1、2這個 1、2在split 3 時候被呼叫,且先於a中split 1 執行 先進行顯示(執行順序跟彈棧順序不要弄混)
即結果為
b: 12 a: 136
12136
不進行詳細說明
優先呼叫
split 12、6、3、2、1
固定輸出 1 2 3 6
只需要考慮split 3 中 特殊情況
split 3 中 執行完 if 中**塊後,已經有 print 1 2
輸出 12
再執行無論是否滿足條件 都將要觸發** print(split (3/2))
print split(1)–return 1
輸出121
特殊情況split 3 結束
最終結果:12136
優先呼叫&方法呼叫棧做基準(詳細**)
(方法優先執行,
即如果滿足 number%2!=0 條件先只考慮
split((number + 1) / 2)
這個基本操作,後續操作當作掛載在此操作後的操作暫時不予理會
)方法呼叫棧如下 向上彈出
number
split
return11
2123
2363
612612
num==2,不滿足條件
split 1 --return 1num==3,滿足條件print:1
split 2—return 2(這裡split 1 一次壓入新棧)print:2
走split 3/2
number
split
return11
split 1 return 1num==6,不滿足條件print:1
split 3 --return 3num==12,不滿足條件print:3
split 6–return 6print:6
遞迴呼叫的棧溢位
如下 include include int recurse int x int main int argc,char ar 22執行結果如下 hxl hxl virtual machine 桌面 task code r 100 x 100.a at 0x7ffcfce0afd0 x 99.a at...
方法的遞迴呼叫
在乙個方法中可以呼叫其它的方法 如在a方法中呼叫b方法 可以看到是沒有問題的,那我們在方法b中也呼叫方法a呢?package com.dh.method public class method03 public static void a public static void b 一開始是沒有問題的...
方法的遞迴呼叫
1 什麼是遞迴?方法自身呼叫自身。a a 2 遞迴很耗費佔記憶體,遞迴演算法可以不用的時候盡量別用。3 以下程式執行的時候發生了這樣的乙個錯誤 不是異常,是錯誤error j a lang stackoverflowerror 棧記憶體溢位錯誤。錯誤發生無法挽回,只有乙個結果,就是jvm停止工作。4...