#! /usr/bin/env python
# -*- coding: utf-8 -*-
def recursive_1(n):
"""樓梯有n階台階,上樓可以一步上3階,也可以一步上5階,
計算共有多少種不同的走法?
設n階台階的走法數為f(n)。如果台階數小於等於3,走法有2種(一步上3個台階或者5個台階),
即f(n<=3) = 2;如果台階數為4或者5,走法有3種((3,3), (3,5), 5),即f(n==4 or n==5) = 3;
當有n個台階(n>5)時,我們縮小問題規模,可以這樣想:最後是一步上3個台階的話,之前上了
n-3個台階,走法為f(n-3)種,而最後是一步上5個台階的話,之前上了n-5個台階,走法為f(n-5)
種,故而f(n) = f(n-3) + f(n-5)
"""if n <= 3:
return 2
elif n in (4, 5):
return 3
else:
return recursive_1(n-3) + recursive_1(n-5)
if __name__ == "__main__":
for i in xrange(20):
print i, recursive_1(i)
python遞迴實現 遞迴演算法 python實現
在函式的定義中對這個函式自身的呼叫,就是遞迴。遞迴結構中,遞迴的部分必須比原來的整體簡單,才有可能到達某種終結點 出口 而且必須存在非遞迴的基本結構構成的部分,否則會無限遞迴。學習目標 程式設計實現斐波那契數列求值 f n f n 1 f n 2 程式設計實現求階乘 n 程式設計實現一組資料集合的全...
Python 實現遞迴演算法
1 遞迴的定義 遞迴就是子程式 或函式 直接呼叫自己或通過一系列呼叫語句間接呼叫自己,是一種描述問題和解決問題的基本方法。遞迴常與分治思想同時使用,能產生許多高校的演算法。遞迴常用來解決結構相似的問題。所謂結構相似,是指構成原問題的子問題與原問題在結構上相似,可以用類似的方法解決。具體地,整個問題的...
演算法 Python遞迴實現走迷宮
迷宮問題 乙個由0或1構成的二維陣列中,假設1是可以移動到的點,0是不能移動到的點,如何從陣列中間乙個值為1的點出發,每一只能朝上下左右四個方向移動乙個單位,當移動到二維陣列的邊緣,即可得到問題的解,類似的問題都可以稱為迷宮問題。在python中可以使用list巢狀表示二維陣列。假設乙個6 6的迷宮...