演算法筆記學習 入門篇 2 遞迴

2021-10-06 08:06:54 字數 1357 閱讀 7661

分解:

將原問題分解為若干和原問題結構相同或相似的子問題

解決:遞迴求解所有子問題

合併:將子問題的解合併為原問題的解

案例:階乘

案例:斐波那契數列

案例:全排列

一般稱將1~n這n個整數按某個順序擺放的結果稱為這n個整數的乙個排列,而全排列是指這n個整數能夠形成的全部排列。現在需要實現按字典序實現 1 ~ n 的全排列。其中,(a1,a2,…,an)字典序小於(b1,b2,…,bn)是指存在乙個i,使得a1=b1,a2=b2,…,a(i-1)=b(i-1),ai

實現遞迴的兩個要素:①遞迴式②遞迴邊界

階乘

#include

intf

(int n)

intmain()

fibonacii數列
#include

intf

(int n)

intmain()

全排列(n = 3)
#include

const

int maxn =11;

//p為儲存當前排列的陣列, hashtable用於記錄整數 x是否已經在 p中

int n, p[maxn]

, hashtable[maxn]=;

//處理排列中的第 index 號位置

void

generatep

(int index)

printf

("\n");

return;}

for(

int x =

1; x <= n; x++

)//列舉 1 ~ n,試圖將 x填入p[i] }}

intmain()

n皇后問題(基於全排列,n = 8)
#include

#include

const

int maxn =11;

//p為儲存當前排列的陣列, hashtable用於記錄整數 x是否已經在 p中

int n, p[maxn]

, hashtable[maxn]=;

int count =0;

//處理排列中的第 index 號位置

void

generatep

(int index)}}

if(flag) count++

;return;}

for(

int x =

1; x <= n; x++

)//列舉 1 ~ n,試圖將 x填入p[i] }}

intmain()

Django2學習筆記 入門篇(2)

個人學習筆記,內容不作為各位學習參考 2 對應用下的models.py檔案進行編輯 後台資料庫字段設計 from django.db import models from django.utils import timezone from django.contrib.auth.models imp...

NumPy學習筆記 入門篇

numpy學習筆記 收集者 keengle 最近在學習scipy。在理解scipy之前,numpy作為scipy基本的模組之一,是不得不去理解掌握的。先總結一下numpy部分的內容吧。接下來學習scipy,最後是pylab和matplotlib。介紹numpy是乙個python的擴充套件模組,通過使...

Spring學習筆記 入門篇

說明 本章筆記是一些針對入門的簡單步驟的筆記,入門的同學不需要知道太多關於spring內部原理的東西。還有一些犄角旮旯的瑣碎知識,如果你面試會遇到,背背就可以了。1.spring是面向介面程式設計的。可忽略 2.spring2個核心 ioc di 和aop。ioc di 也叫控制反轉。是解決類之間的...