我現在有一個顯示數三角形代碼:鑽石由C++中的數字使用遞歸?
#include <iostream>
using namespace std;
void RowNumbers(int n, int max) {
if (n < max) {
cout << n << ' ';
RowNumbers(n + 1, max);
}
cout << n << ' ';
}
void PrintRhombus(int n, int space = 0) {
if (n > 1) {
PrintRhombus(n - 1, space + 2);
}
cout << string(space, ' ');
RowNumbers(1, n);
cout << "\n";
}
int main() {
int a;
cout << "Enter a number [1-9]: " << endl;
cin >> a;
if (a > 0 && a < 10) {
PrintRhombus(a, 0);
}
else
cout << "Wrong input." << endl;
}
輸出在此顯示,如果輸入是二。
1
1 2 1
這只是我想要的一半。我想做一個完整的鑽石,所以我想要一個「1」作爲這個輸出的第三行。 RowNumbers函數生成每一行,PrintRhombus函數負責創建數字三角形。我只想使用遞歸創建三角形的下半部分。那麼我應該創建另一個創建鑽石下半部分的遞歸函數嗎?或者我應該建立在PrintRhombus函數上,並在值達到1時啓動其他內容。
所以再次我的目標是要打造一批鑽石,因此,如果您輸入3,那麼輸出是:
1
1 2 1
1 2 3 2 1
1 2 1
1
有什麼特別的爲什麼這需要用遞歸來完成?如果解除這個限制,可以創建一個更簡單,更易讀的程序。 – 2014-10-11 03:55:59
我知道有一種方法可以做到這一點沒有遞歸,但這是一個家庭作業的任務,並且我只限於使用遞歸... – edboysega321 2014-10-11 03:59:44
Nitpick:請[不要空間/格式化你的代碼](http ://stackoverflow.com/revisions/26310838/1)(編輯)。格式確實涉及很多主觀性,這是事實......是否把支撐放在下一行/等。但是,像這樣大量的流浪線不是你在練習中看到的...有充分的理由。它的個人選擇方面確實結束在這裏的Q&A中引發實際問題,因爲它會在代碼摘錄中產生不必要的滾動條,並且您無法在一個頁面上看到所有內容。 – HostileFork 2014-10-11 05:09:45