Python 學習系列之四 有趣的經典數學問題

2021-09-23 01:57:31 字數 1713 閱讀 3271

"""

遞迴的演算法,必須滿足兩個條件:

1. 原問題與新問題有相同的形式

2. 遞迴就是一種迴圈,必須有乙個遞迴出口退出迴圈

""""""

n! = 1 * 2 * 3 * .... * n = (n-1)! * n 且 1!=1

即fac(n) = fac(n-1)* n

"""def fac(n):

if n == 1:

return 1

return fac(n-1) * n

print(fac(5)) # 120

""" 斐波那切數列

f0 = 0, f1 = 1, fn = f(n-1) + f(n-2)(n>=2)

"""def fib(n):

if n == 0:

return 0

if n == 1:

return 1

return fib(n-1) + fib(n-2)

print(fib(6)) # 8 , 0,1,2,3,5

"""

印度的舍罕王重賞宰相:乙個棋盤,第一格賞一粒麥,第二格賞兩粒,三格賞4粒,每一格比前一格多一倍,總共64格

""""""

f1 = 1, f2 = f1* 2, f3 = f2* 2... f64 = f63 * 2

f = f1 + f2 + f3 + ... + f64

"""def shehanwang(n):

t = 1

s = 1

for _ in range(2, n+1):

t *= 2

s += t

return s

print(shehanwang(64)) # 18446744073709551615

# 另一種思路, 每一格是2的n-1次方

l = [2 ** i for i in range(0, 64)]

print(sum(l)) # 18446744073709551615

"""

統計0-9這10個數字可以組成多少個不重複的三位數

""""""

根據排列組合,去除0開頭的有:a[3,10] -a[2,9] = 10 * 9 * 8 - 9 * 8 =648

"""def buchongfu():

counter = 0

for a in range(1, 10):

for b in range(0, 10):

for c in range(0, 10):

if(c != b and b != a and a != c):

counter += 1

return counter

print(buchongfu()) # 648

"""

給出任何自然數,反覆進行如下計算

(1) 若為奇數,則乘以3+1

(2)若為偶數,則除以2

最後總可以得到運算結果為1

"""def jiaogu(n):

nc = n

while nc != 1:

nc = nc * 3+1 if nc % 2 else nc / 2

print('%d符合角谷猜想' % n)

jiaogu(50) # 50符合角谷猜想

MySQL學習筆記之四 有關資料庫操作

一 用show顯示已有的資料庫 語法 show databases like wild 如果使用like wild部分,wild字串可以是乙個使用sql的 和 萬用字元的字串。功能 show databases列出在mysql伺服器主機上的資料庫。示例 mysql show databases li...

python學習之四

緊接著上週的學習,進行到了列表的學習 從列表中獲取元素 列表索引值是從0開始的 為列表名字 索引值 列表資料交換 temp member 0 member 0 member 1 member 1 temptemp臨時變數 列表資料的刪除 1.member.remove 所需刪除元素名 2.del語句...

python 學習系列教程四注釋

在這一節主要說一下注釋這項功能吧,在大多數程式語言中基本都會寫注釋,我在程式設計過程中都會寫,只有使用易語言的時候不寫,那個東西能看明白,很多人感覺不用寫,都能記得住,時間一長就完全忘記了,再看 就麻煩了。行了,python 注釋總結一句話就是 用 號,號後面寫注釋的內容。井號後面的內容都會被pyt...