def a(n):?if n==1:??print('asd')??return 10?else:??print(n)??return n*a(n-1)?上面的return 10 為什么要寫成 return 1? 呢 就是為什么到最后的返回結(jié)果還要*10呢上面的
1 回答
已采納

子木李
TA貢獻(xiàn)46條經(jīng)驗 獲得超27個贊
遞歸是這樣的,比如說,需要算一個10!,那么,傳入一個n=10,那么,首先,執(zhí)行返回的是 10*a(9),然后a(9)繼續(xù)執(zhí)行,返回 9*a(8),......就這樣一直執(zhí)行,返回 2*a(1),因為n=1時就是遞歸的終止條件了,所以,a(1)返回了1,這里就是為什么 return 1了,然后就得到了 10!的值了,至于樓主所說的返回的結(jié)果*10,應(yīng)該是具體語境的原因吧,比如,可能需要我計算的不是 n!階乘,二十 n*n!,那么,當(dāng)n=10時,最后的返回結(jié)果就需要乘以10了,也就是說,遞歸的那部分是計算n!的,至于最后返回的結(jié)果如何處理,那就看具體的語境了
添加回答
舉報
0/150
提交
取消