題目:用遞迴演算法編寫乙個程式,實現字串的反序。
#include#includeusing namespace std;
int opp_str(char *str, int n)
int main()
**解釋如下:
定義了乙個內部靜態變數m,並且初始化令m=0.
if函式體下面的三行**和一般的交換函式概念相同,故不做解釋。
在編寫的遞迴函式中,實現了字串的反序。需要注意的是,遞迴和迴圈一樣其實都需要乙個判別是否停止的條件。在這個遞迴函式中,假如字串中需要排序的字元有8個。那第一輪遞迴是1號和8號交換順序,然後2號(m)和7號(n)交換順序,直到n小於m,比如4號和5號交換後的順序是5(m)、4(n),此時遞迴已經結束了,你不能夠把5、4的順序再顛倒過來。
接下來是**測試
輸入任意,注意大小要小於定義的陣列大小。可以看到,程式已經完美的達成了字串反序這一目的。
最後,拋給大家乙個問題。感興趣的讀者可以考慮一下。
其實我的**已經比較精簡了,但是在寫的過程中我覺得還是有內容可以簡化。這裡m的定義是否是必須的?能否在遞迴函式的每一輪遞迴中,通過乙個較好的邏輯表達代替掉m,從而實現更高的效率?
北京理工大學-宇航學院-探測制導與控制技術-劉鵬飛
id:翡翠的風吟
這門課程讓我學到了很多細節,比直接看c++ primer plus的效率要高。並且老師也介紹了很多實用的方法,這讓我實現大規模工程軟體程式設計時,能夠節省空間和提公升效率,總的來說這門課選的不虧,但是和小學期一樣依舊沒有題目能讓我花太多時間。所以,我還是比較期待課上能出一些比較有趣的演算法題目。(平時在ros上碰壁慣了,在這門課上找回了自信。)
C語言遞迴實現字串翻轉
一,c語言遞迴實現字串逆轉 簡單的實現 abc 的逆轉 函式原型 void reverse char value,char result char value為待逆序字串 char result為存放的逆序結果 1,首先判斷是否value是否為空和value是否是字串結尾條件 條件不滿足則retur...
C 物件導向繼承1和字串
區別 值型別和引用型別在記憶體上儲存的地方不一樣。值型別的值是儲存在記憶體的棧當中。引用型別的值是儲存在記憶體的堆中。在傳遞值型別和傳遞引用型別的時候,傳遞的方式不一樣。值型別我們稱之為值傳遞,引用型別我們稱之為引用傳遞。常見的值型別 int double bool char decimal str...
字串的刪除,遞迴實現
include include char fun char p m p p m printf s n q printf s n b strcpy q,b if flag 1 return fun fun q else return null int main 總結 這個程式總的來說用到了一些比較常用...