[python]每日算法---全錯排序的遞歸實現與非遞歸實現

從今天開始,堅持一天解決消化吸收一個經典算法問題

詳細解析(轉)

# 全錯排列問題的遞歸解法
def nolist(n):
    if n==1:
        return 0
    elif n==2:
        return 1
    else:
        return (n-1)*(nolist(n-1)+nolist(n-2))

print(nolist(int(input("請輸入元素個數"))))

#全錯排列問題的非遞歸解法
n=int(input('請輸入元素個數'))
ans=3
a=0
b=1
while 1:
    if n==1:
        print(a)
        break
    elif n==2:
        print(b)
        break
    elif ans<=n:
        z=(ans-1)*(a+b)
        a=b
        b=z
        ans+=1
        print(z,a,b,ans,"\n")
    else:
        print(z)
        break
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章