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

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