遞迴函式中的變數呼叫分析

2021-06-11 18:51:18 字數 1552 閱讀 1730

遞迴函式中的變數呼叫分析
分析遞迴函式中的變數呼叫問題對於我們理解遞迴函式的執行軌跡和編寫遞迴類程式有著極大的幫助,下面我們就以乙個具體的例子來分析所要描述的問題。

我們以馬周遊問題為例進行分析:

一、馬周遊問題描述

在乙個5 * 6的棋盤中的某個位置有乙隻馬,如果它走29步正好經過除起點外的其他位置各一次,這樣一種走法則稱馬的周遊路線,試設計乙個演算法,從給定的起點出發,找出它的一條周遊路線。

為了便於表示乙個棋盤,我們按照從上到下,從左到右對棋盤的方格編號,如下所示:

01     02       03     04       05     06

07     08       09     10       11     12

13     14       15     16       17     18

19     20       21     22       23     24

25     26       27     28       29     30

馬的走法是「日」字形路線,例如當馬在位置15的時候,它可以到達2、4、7、11、19、23、26和28。但是規定馬是不能跳出棋盤外的,例如從位置1只能到達9和14。

二、源程式片段(c++描述)

void dfs(int x,int y,int step)

if(step==30)

cout<0&&tempx<6&&tempy>0&&tempy<7&&chess[tempx][tempy]==false)}}

三、問題分析
對於上面的程式片段,我們以程式片段中變數step的呼叫進行分析。變數step是在函式dfs()的形參列表中宣告的,其作用域和生存期為函式dfs()體內。
1、對於函式dfs()的每次呼叫,都要重新宣告乙個區域性變數step,並且給step賦予給定的值。

3、假設我們將區域性變數step設定為全域性變數或者是靜態區域性變數,那麼程式就要改寫為下面的形式:

遞迴函式中的變數呼叫分析

分析遞迴函式中的變數呼叫問題對於我們理解遞迴函式的執行軌跡和編寫遞迴類程式有著極大的幫助,下面我們就以乙個具體的例子來分析所要描述的問題。我們以馬周遊問題為例進行分析 一 馬周遊問題描述 在乙個5 6的棋盤中的某個位置有乙隻馬,如果它走29步正好經過除起點外的其他位置各一次,這樣一種走法則稱馬的周遊...

bash中函式的呼叫 變數的定義 函式遞迴 訊號

方法1 函式名 方法2 function 函式名 1 呼叫函式列印 l like westos bin bash function fun1 fun12 bin bash function fun1 count 1 while count le 5 do fun1 count count 1 don...

函式的遞迴呼叫

乙個函式在它的函式體內呼叫它自身稱為遞迴呼叫。這種函式稱為遞迴函式。c語言允許函式的遞迴呼叫。在遞迴呼叫中,主調函式又是被調函式。執行遞迴函式將反覆呼叫其自身。每呼叫一次就進入新的一層。例如有函式f如下 int f int x 這個函式是乙個遞迴函式。但是執行該函式將無休止地呼叫其自身,這當然是不正...