我想它一定是k
或n
?
遞歸工作原理:它spanns樹:
到printStars每次調用導致一個*
(2^0)或兩個*
(2^1)。
如果調用printStars(4):
遞歸級別4 IST = 0,因此返回本身兩個單獨的呼叫收縮,每個參數(3)!
遞歸級別3 ist!= 0因此它返回兩個獨立調用自身的收縮,每個調用都帶有參數(2)。
遞歸級別2 ist!= 0因此它返回兩個獨立調用的收縮,每個調用都帶有參數(1)。
遞歸級別1 ist!= 0,因此它返回兩個獨立調用的收縮,每個調用都帶有參數(0)。
遞歸級別0 ist == 0因此每次調用返回一個*
。
返回遞歸級別1,我們收到兩個*
並簽約並返回它們。
回到遞歸級別2,我們收到兩個**
並簽訂並返回它們。
回到遞歸級別3,我們收到兩個****
並簽約並返回它們。
回到遞歸級別4,我們收到兩個********
並簽約並返回它們。
所以呼叫者接收 '***************' 2^4 = 16 *的
caller |
k=4 / \ (just call yourself 2 times an return contraction of both calls)
k=3 / \ / \ (just call yourself 2 times an return contraction of both calls)
k=2 /\ /\ /\ /\ (just call yourself 2 times an return contraction of both calls)
k=1 /\ /\ /\ /\ /\ /\ /\ /\ (just call yourself 2 times an return contraction of both calls)
k=0 ** ** ** ** ** ** ** ** (just return 2^0 = 1 '*')
我假定你的意思'k'代替'Ñ '(反之亦然)。 –