def diguiji(n):
if n==1:
return 1
else:
return n*diguiji(n-1)
def diguihe(n):
if n==1:
return diguiji(1)
else:
return diguiji(n)+diguihe(diguiji(n-1))
n=int(input())
diguihe(n)
这个递归该怎么拯救
首先,你没有说清楚你要做什么。
再者,你的程序也不能运行。python程序别的不看,起码要缩进,缩进都没有的程序,肯定错的。
如果你有正确的程序,咱们可以推下它是干嘛的,如果你说明白你要做什么,我们可以看下你程序哪里不对。你两头都没有,那回答个毛。
假設你的程式碼是這樣的話
def diguiji(n):
if n==1:
return 1
else:
return n*diguiji(n-1)
def diguihe(n):
if n==1:
return diguiji(1)
else:
return diguiji(n)+diguihe(diguiji(n-1))
n=int(input())
diguihe(n)
這完全無法使用,因為假設input(5),則在diguihe的else中會return 1*2*3*4*5 + diguihe(1*2*3*4),
你會發現原本是diguihe(5),變成diguihe(24),之後diguihe內的數字會愈來愈大,直到程式爆掉。
你還是講一下你這個程式要做甚麼,這樣我比較知道要怎麼改。