C語言的遞迴思想例項分析

2022-10-04 04:18:08 字數 828 閱讀 4359

通俗點來說,遞迴就是自己呼叫自己。

遞迴的難點一是理解遞迴的執行呼叫過程,二是設定乙個合理的遞迴結束條件。

下面來看一段摘自書中的簡單程式:

#include

long fact(int n);

long ***ct(int n);

int main(程式設計客棧void)

else }

}long fact(int n)

return ans;

}lontpbhxmg ***ct(int n)

else

return ans;

}該程式用來計算階乘,分別採用迴圈和遞迴實現。用語言來描述一下遞迴的執行過程吧。

假設計算5!,n=5,分別呼叫了自己4次,即n分別等於4,3,,2,1。當n等於0時,返回ans=1,這時***ct這個函式才剛剛完整的執行一遍,返回ans=1,

壓棧已經完成,開始出棧。

n與ans,分別相乘5次,即ans分別等於1,2,6,24,120(24*5)

即5!=120

我們來看一下n的變化規律:

入棧時,n=5,4,3,2,1,

出棧時,n=1,2,3,4,5

遞迴實質上就是棧。

往往容易忽略遞迴條件不滿足後,被調函式把控制權轉會主調函式,主調函式繼續執行剩餘的語句這一過程,而造成迷惘。

其實,所有事情都可以用生活中的事情加以解釋,就像四大名著相互相通,可以互相解釋一樣,做一件事情可以不要求甚至不清楚最後的結果,但是一定要明白這件事情是在做什麼,明白這件事情來龍去脈,但是不要死鑽牛角尖,靜心做學問。

本文標題: c語言的遞迴思想例項分析

本文位址:

C語言 遞迴演算法思想

繼上篇博文裡介紹的c語言常見基礎演算法,本篇在於演算法的思路的整理和常見的演算法程式設計實現。定義 遞迴具體用法其實就是讓你把乙個問題分解成很多個類似的情況,雖然你要解決這個問題非常難,莫名其妙,要你想幾年,但是把他一直遞迴分解,就變成很好理解的單種情況,而你整個問題又是跟這個單種情況類似,把整個問...

c語言遞迴講解分析

c語言允許函式呼叫它自己,這種呼叫的過程稱為 遞迴 recursion 舉例說明,如下 include void up and down int int main void void up and down int n 定義乙個函式up and down int n 且函式當中再次呼叫本身。下面是程...

漫談遞迴 遞迴的思想

為什麼要用遞迴 程式設計裡面估計最讓人摸不著頭腦的基本演算法就是遞迴了。很多時候我們看明白乙個複雜的遞迴都有點費時間,尤其對模型所描述的問題概念不清的時候,想要自己設計乙個遞迴那麼就更是有難度了。用歸納法來理解遞迴 數學都不差的我們,第一反應就是遞迴在數學上的模型是什麼。畢竟我們對於問題進行數學建模...