1樓:匿名使用者
假設s裡有個兩字元吧,當第一次呼叫reverse(s)時,判斷*s是否為空,即s裡的第一個字元是否存在,如果有的話,就呼叫reverse(s+1),即對s裡的第二個字元進行判斷。不為空,就再呼叫,對下一個進行判斷,因為s裡只有兩個字元,所以在第三次呼叫時,直接返回。返回到reverse(s+1)中,之後將*s+1列印出來,即列印第二個。
然後再返回到reverse(s)中。再將*s列印,即列印第一個字元。這樣就實現了反序輸出。
即這個函式的功能是,對字串進行判斷,從第一個字元開始,判斷其是否為空,不為空,則呼叫,對下一個判斷,直到為空,則返回,從最裡層列印輸出,即最後一個字元列印輸出。
2樓:看灑家手段
if(*s) 判斷指標s是否有指向,若有則向後推一位,代如原函式繼續判斷,直到字串尾,指標s無指向時,返回上一層,並輸出當前指標s指向的字元,依次直到字串開頭。
3樓:手曲一指
重點就在reverse函式
首先要理解 *s 指向的是字元陣列str = "this is a test" 的第一個字元't'
那麼s+1就指向後面一個字元
C 函式遞迴問題,C 用函式遞迴求1 2 到n的問題
const int len 66 const int divs 6 void subdivide char ar,int low,int high,int level int tmain int argc,tchar ar return 0 將陣列ar子分,並在子分構成中不斷在子分的子串中間賦值為 ...
c語言遞迴函式,請用C語言編寫遞迴函式
遞迴函式 程式語言中,函式func type a,直接或間接呼叫函式本身,則該函式稱為遞迴函式。遞迴函式不能定義為行內函數。在數學上,關於遞迴函式的定義如下 對於某一函式f x 其定義域是集合a,那麼若對於a集合中的某一個值x0,其函式值f x0 由f f x0 決定,那麼就稱f x 為遞迴函式。函...
c語言遞迴求階乘,c語言怎麼用遞迴呼叫函式的方法求n的階乘?
問明 舉例 用遞迴方法求n include int main int n int y printf input a integer number scanf d n y fac n printf d d n n,y return 0 int fac int n int f if n 0 printf...