day07 5 遞迴和非遞迴分別實現strlen

2021-10-11 02:23:09 字數 1228 閱讀 8350

非遞迴官方函式版本

#define _crt_secure_no_warnings 1

#include

intmain()

;printf

("請輸入一串字串,本程式會將求出字串的長度:>");

gets

(str)

; strsize=

strlen

(str)

;printf

("%d"

,strsize)

;return0;

}

非遞迴自製函式版本

#define _crt_secure_no_warnings 1

#include

intselfstrlen

(char

* str)

return count;

}int

main()

;printf

("請輸入一串字串,本程式會將求出字串的長度:>");

gets

(str)

; strsize =

selfstrlen

(str)

;printf

("%d"

, strsize)

;return0;

}

遞迴自製函式版本

#define _crt_secure_no_warnings 1

#include

intselfstrlen

(char

* str)

//跳出遞迴,當陣列為字串結束標誌的時候跳出遞迴

sum +=1

; sum +

=selfstrlen

(str +1)

;return sum;

}//abcd

intmain()

;printf

("請輸入一串字串,本程式會將求出字串的長度:>");

gets

(str)

; strsize =

selfstrlen

(str)

;printf

("%d"

, strsize)

;return0;

}

遞迴和非遞迴分別實現strlen

遞迴和非遞迴分別實現strlen 來計算字串長度。方法一 遞迴 1 鍵入要求的字串 2 判斷字串是否為空,為空返回0 不為空返回strlen a 1 1 a 1表示字串後移一位 1表示字串長度 1 3 列印結果 方法二 1 鍵入要求的字串 2 判空,空則返回0 不為空則迴圈,count自增 3 列印...

遞迴和非遞迴

1 遞迴就是函式呼叫函式本身,執行起來就是函式巢狀函式,層層巢狀,所以函式呼叫 引數堆疊都是不小的開銷,但是程式簡單。2 非遞迴就是不斷地對引數入棧 出棧,省去了函式層層展開 層層呼叫的開銷。雖然引數出入棧次數多了,但是一般都開闢固定的足夠大的記憶體來一次性開闢 重複使用。3 非遞迴是從堆疊的角度來...

堆排序遞迴和非遞迴

完全二叉樹 葉子節點在最後一層或者次一層,且節點從左往右連續 大根堆 任何根節點都比他的左右子節點都要大 i為節點在陣列中的索引,求節點的父節點 i 1 2,求節點的左節點 i 2 1,求節點的右節點 i 2 2 測試方法 test public void test heapify2 array s...