學渣觀點:
1.遞迴實現不可取
def factorial(n):
if n > 1:
return n*factorial(n-1)
return 1
while true:
try:
n = input("請輸入乙個數字(輸入 q 退出):")
if n == "q":
break
n = int(n)
if n < 1:
raise valueerror
x = factorial(n)
print(x)
except valueerror:
print("不是乙個正數")
超過 1000 的階乘計算後會報錯:
recursionerror: maximum recursion depth exceeded in comparison
解決辦法:可以修改遞迴深度的值,讓它變大大一點。
**看起來很好,但是有個致命問題,你試試看 1000 的階乘,記得乙個經典例題 ibm 出 1000 的階乘,都說很容易,但是考慮過這資料的儲存嗎?遞迴做這種大數字計算感覺不怎麼行了。而且有更加簡單且有效的方法,python 的特點應該是自帶的數學公式。
2.示例**,和下面用階乘函式的**,實際操作 70000 的階乘計算速度才受到一些影響,肉眼感覺相差不大。
3.入門python感覺,python最大的優勢還是在於自帶的數學計算式,**的簡潔,大數的計算,因此學python應盡可能用數學公式來碼**。
teachdark
teachdark
101***[email protected]年前 (2019-05-10)
Python學習筆記 1 1 2 認識Python
一.課程目標 二.詳情解讀 1.初識pythonpython語言是一種高階程式語言,它於1991年由吉多.範羅蘇姆 guido van rossum 發明。目前主要應用於web開發 gui開發 網路爬蟲 資料科學 人工智慧等領域。python官方 python語言也是一種多正規化程式語言,即物件導向...
python實現演算法 kmp演算法python實現
kmp演算法python實現 kmp演算法 kmp演算法用於字串的模式匹配,也就是找到模式字串在目標字串的第一次出現的位置 比如abababc 那麼bab在其位置1處,bc在其位置5處 我們首先想到的最簡單的辦法就是蠻力的乙個字元乙個字元的匹配,但那樣的時間複雜度會是o m n kmp演算法保證了時...
python呼叫qt Qt 下呼叫 Python
qt是乙個跨平台的c 圖形使用者介面應用程式框架,而python是一門非常強大的程式語言,本文主要介紹了如何在osx系統下qt呼叫python指令碼。先上 include 包含呼叫python相應的標頭檔案 include int main int argc,char ar 初始化python直譯器...