C++物件導向程式設計——遞迴實現字串的反序
C++物件導向程式設計
題目:用遞迴演算法編寫一個程式,實現字串的反序。
#include<iostream>
#include<string.h>
using namespace std;
int opp_str(char *str, int n)
{
static int m = 0;
if (n <= m)
return 1;
char tmp = str[m];
str[m++] = str[n];
str[n] = tmp;
return opp_str(str, n - 1);
}
int main()
{
char str[100];
gets_s(str);
opp_str(str,strlen(str)-1);
puts(str);
return 0;
}
程式碼解釋如下:
定義了一個內部靜態變數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++遞迴物件程式設計
- 物件導向程式設計C++物件程式設計C++
- C++與物件導向程式設計C++物件程式設計
- Go物件導向程式設計OOP的實現Go物件程式設計OOP
- C++模組2:物件導向程式設計C++物件程式設計
- Objective-C——實現物件導向程式設計Object物件程式設計
- C++物件導向程式設計_Part1C++物件程式設計
- 物件導向程式設計(C++篇4)——RAII物件程式設計C++AI
- C++程式設計雜談:物件導向 (轉)C++程式設計物件
- 物件導向程式設計物件程式設計
- 物件導向程式設計(C++篇3)——析構物件程式設計C++
- 物件導向程式設計(C++篇2)——構造物件程式設計C++
- C++ 物件導向高階設計C++物件
- Scala的物件導向程式設計物件程式設計
- JS物件導向的程式設計JS物件程式設計
- javascript:物件導向的程式設計JavaScript物件程式設計
- iOS 開發之 OOA (物件導向分析) & OOD (物件導向設計)& OOP (物件導向程式設計)iOS物件OOP程式設計
- [.net 物件導向程式設計基礎] (2) 關於物件導向程式設計物件程式設計
- 十三、物件導向程式設計物件程式設計
- js物件導向程式設計JS物件程式設計
- 程式設計思想 物件導向程式設計物件
- 十六、物件導向程式設計物件程式設計
- perl 物件導向程式設計物件程式設計
- LotusScript物件導向程式設計物件程式設計
- Javascript 物件導向程式設計JavaScript物件程式設計
- JS物件導向程式設計(一):物件JS物件程式設計
- 遞迴物件的設計模式遞迴物件設計模式
- [筆記]物件導向的程式設計筆記物件程式設計
- JavaScript 中的物件導向程式設計JavaScript物件程式設計
- 物件導向的JavaScript程式設計 (轉)物件JavaScript程式設計
- C++——談談你對物件導向程式設計的認識C++物件程式設計
- c++物件導向程式設計 常資料成員的使用C++物件程式設計
- JavaScript物件導向程式設計理解!JavaScript物件程式設計
- Python物件導向程式設計Python物件程式設計
- Python 物件導向程式設計Python物件程式設計
- Javascript 物件導向程式設計(一)JavaScript物件程式設計
- Javascript 物件導向程式設計(二)JavaScript物件程式設計
- Javascript 物件導向程式設計(三)JavaScript物件程式設計