Python:計算某個數的階乘

1.用循環的方法實現:

num = int(input())
factorial = 1                   # 1
for i in range(1,num + 1):      # 2
    factorial *= i              # 3
print(factorial)

1.1 這是初始化階乘,這裏的factorial沒有實際含義,只是一個變量名
1.2 循環,左閉右開,所以右邊的num+1實際上是值循環到num
1.3 factorial *= i拆分開來是factorial = factorial * 1,相當於每次循環都把i乘一下factorial並再次賦值給factorial,最終結果是 一個1 * 2 * 3 * 4 ...的循序一直乘到你的num爲止。

2.用遞歸的方法實現:

def factorial(n):
    if n == 1:                   # 1
        return n
    return n * factorial(n - 1)  # 2
num = int(input())
print(factorial(num))            # 3

2.1 設置一個下限,當n == 1時,返回n,使其不要再執行下面的factorial(n - 1)
2.2 返回 n * factorial(n - 1)factorial(n - 1)爲調用自己本身的函數,n - 1爲實參,相當於把n進行-1操作,比如輸入的num4,那這裏的n-1就爲3,把3傳進factorial再進行計算,就相當於是4 * 3 * 2 * 1
2.3 最後調用factorial函數,括號裏面的num爲實參,是實際意義上的參數,是一個實際存在的參數,n爲形參,形式上的參數,可以理解爲數學的X,沒有實際的值,括號裏面的num傳進去才能進行計算,最後再打印出結果。

小結

遞歸的要求

遞歸算法所體現的“重複”一般有三個要求:

(1)每次調用在規模上都有所縮小(通常是減半)

(2)是相鄰兩次重複之間有緊密的聯繫,前一次要爲後一次做準備(通常前一次的輸出作爲後一次的輸入)

(3)在問題的規模極小時必須用直接給出解答而不再進行遞歸調用,因而每次遞歸調用都是有條件的(以規模位達到直接解答的大小爲條件)無條件遞歸調用將會成爲死循環而不能正常結束。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章