函式遞迴與棧的實用

2021-07-06 01:12:09 字數 426 閱讀 3628

問題:求斐波那契數列的遞迴方法與非遞迴方法

棧是一種應用範圍廣泛的資料結構,適用於各種具有"後進先出"特性的問題。

遞迴函式是指在乙個函式、過程或資料結構的定義中又應用了它自身的函式。

#include

#include

using std::cout;

using std::endl;

using std::stack;

//非遞迴方法

int 

fibonacci

(int num)

int sum=1;

while(!s.empty())

return sum; }

//遞迴方法

int f

ibonacci

(int num)

遞迴函式與棧

關於函式呼叫與棧的關係 鏈結 下面是在函式呼叫與棧的關係的基礎上,為了解遞迴呼叫的筆記。為了方便描述,將乙個函式f x 的棧幀以下圖的方式進行簡化 並用乙個求階乘的函式來解釋遞迴函式與棧的聯絡 int fun int n intmain int argc,char argv 首先程式從主函式開始,第...

遞迴函式的棧表達

void recursive m r m if m in a p m recursive l m q m recursive r m s m else ret m 分兩類操作 1.cws 表示當前工作棧的引數m 如果cws滿足in a 將能新增的左子結點全部新增入棧中,之後將尾部的不符合in a的執...

遞迴與棧的關係

遞迴與棧 遞迴是乙個重要的概念,同時也是一種重的程式設計方法。簡單地說,如果在乙個函式 過程或資料結構的定義中又應用了它自身 作為定義項之一 那麼這個函式 過程或資料結構稱為是遞迴的定義的,簡稱遞迴。例如,階乘函式可遞迴定義如下 必須注意,遞迴定義不能是 迴圈定義 為此要求任可遞迴定義必須同時滿足如...