C 之遞迴函式的引數傳遞問題

2021-07-05 15:11:00 字數 910 閱讀 4068

學習漢諾塔時,對於遞迴函式重新學習。但是其引數傳遞卻看不懂。搜尋資料,得:

**如下:

#include "stdafx.h"

#include #include using namespace std;

void hanoi(int n, char a, char b, char c)

}int main()

對於呼叫,設n=3,呼叫hanoi(3,'a','b','c')→void hanoi(int n, char a, char b, char c)則首次傳遞過程中為a=『a』,b=『b』,c=『c』;

再次傳遞過程中hanoi(2,a,c,b),則a='a',c='c',b='b'或寫成a='a',

b='b',

c='c',整體變成acb;

繼續傳遞,hanoi(1,a,c,b),則a='a',c='b',b='c'或寫成a='a',b='c',

c='b',整體變成abc;

其傳遞過程為不管上一次呼叫中abc為何種順序,統一看做為abc(順序)所對應的字串!

即,在呼叫hanoi(1,a,c,b)時,把hanoi(2,a,c,b)看做為hanoi(2,a,b,c)其中a='a',b='c',c='b',然後對應順序傳遞下去可得到a='a',c='b',b='c',整體變為abc。

可以理解為cout中的abc就是hanoi中不管順序如何按照預定義的abc進行定義。例如執行hanoi(1,a,c,b)後,得到abc,則a='a',b='b',c='c'!並不是其函式中的a='a',c='b',b='c'!

這就是我的理解,雖然繞的有點暈。

運算結構如下:

c 之指標作為函式引數傳遞的問題

其實,對於c 或者c 最難的一塊地方估計就是指標了。指標是強大的,但也是很多人載在這裡的地方。前段時間寫了一篇文章 c 之 陣列與指標的異同 對c 和c 中的指標做了乙個初步的講解。這次將講解一下指標作為函式引數傳遞的問題。很多人對於指標的使用是有所了解的,但還是經常會載在指標的問題上,是因為還不夠...

C 函式的引數傳遞

一 函式未被呼叫前,函式的形參並不占有實際的記憶體空間,也沒有被賦值。只有在被呼叫的時候,才被賦值。函式引數傳遞指的就是形參和實參想結合的過程。二 函式引數傳遞存在兩種形式 1 值傳遞 即函式在發生呼叫時,給形參分配記憶體空間,直接以實參的值初始化形參。函式被賦值後,實參和形參即沒有關係,形參的改變...

C 函式的引數傳遞

所有的函式都使用 在程式執行棧中分配的儲存區。該儲存區一直保持與該函式相關聯,直到函式結束為止。那時,儲存區將自動釋放以便重新使用。該函式的整個儲存區稱為活動記錄。系統在函式的活動記錄中為函式的每個引數都提供了儲存區,引數的儲存長度由它的型別來決定。引數傳遞是指用函式呼叫的實參值來初始化函式引數儲存...