16 遞迴演算法

2021-10-04 17:56:25 字數 1356 閱讀 8108

目錄

遞迴演算法

遞迴結構包括兩個部分

遞迴是一種常見的解決問題的方法, 即把問題逐漸簡單化; 遞迴的基本思想就是」自己呼叫自己」,乙個使用遞迴技術的方法將會直接或者間接呼叫自己;

利用遞迴可以用簡單的程式來解決一些複雜的問題; 比如: 斐波那契數列的計算, 漢諾塔, 快排等問題;

=> 定義遞迴頭; 什麼時候不呼叫自身方法, 如果沒有頭, 將陷入死迴圈, 也就是遞迴的結束條件;

=> 遞迴體; 什麼時候需要呼叫自身方法;

#coding=utf-8

#測試遞迴演算法--自己呼叫自己,使用遞迴地方都可以使用迴圈,就是麻煩一些

num = 1

def a1():

global num #如果要在函式內改變全域性變數的值,增加global關鍵字宣告一下

print(num)

num += 1

if num < 6:

a1()

# a1()

#使用遞迴求n的階乘(4!=4*3*2*1)

def factorial(n):

if n == 1:

return n

else:

return n*factorial(n-1)

# print(factorial(3))

#遞迴列印所有的目錄和檔案

import os

allfiles =

def gatallfiles(path,level):

childfiles = os.listdir(path)

for file in childfiles:

filepath = os.path.join(path,file)

if os.path.isdir(filepath):

gatallfiles(filepath,level+1) #如果是目錄,再次呼叫自己

gatallfiles("電源命名",0)

for f in reversed(allfiles): #倒敘

print(f)

輸出:d:\wwwroot\pyiteam\venv\scripts\python.exe d:/wwwroot/pyiteam/mypro_obj/mypy02.py

電源命名\南韓

電源命名\南韓\行為藝術

電源命名\南韓\行為藝術\123.txt

電源命名\日本

電源命名\日本\到過

電源命名\哈哈.zip

電源命名\aa_copy.png

process finished with exit code 0

c 學習筆記 16 遞迴

遞迴 能夠解決那些難以用簡單迴圈解決的問題 例如 八皇后問題,階乘 遞迴函式 呼叫自身的函式 1.階乘 0 1 1!1 n n n 1 n 1 n 1 n 2 假設函式factorial n 為求n 如果呼叫到n 0的情況,函式直接返回結果,函式知道如何求解最簡單的情形,稱之為基本情況或者 停止條件...

演算法 遞迴演算法

遞迴演算法的概念,就是通過不斷地呼叫自身,最終達到解決問題的目的。遞迴有兩個點需要注意 1.要不斷的呼叫自身 2.這個遞迴要有出口,不能成為死迴圈 看下面的例子。很多介紹遞迴演算法的,都會用遞迴來做乙個題目 計算乙個數的階層。例如 計算5的階層,5 5 x 4 x 3 x 2 x 1 用遞迴來實現 ...

遞迴演算法經典例項 演算法 遞迴演算法

遞迴現象 老和尚講故事 自己呼叫自己 兩面鏡子互相映像 兩者相互呼叫 演算法思想 把規模大的問題轉化為規模小的相似的子問題來解決。在函式實現時,因為解決大問題的方法和解決小問題的方法往往是同乙個方法,所以就產生了函式自己呼叫自己的情況。遞迴函式 內部操作直接或間接地呼叫了自己的函式。遞迴函式兩大要素...