楊輝三角形 C++ 無需陣列
阿新 • • 發佈:2022-03-16
問題描述:
請打印出下列三角形:
很明顯,第i行的第j個元素等於第i-1行的第j-1和j+1的元素和。
所以較常見的方法是用陣列儲存所有行的值,空格位置預設為0。
但下面這種方法不需要額外的空間,直接觀察規則得到當前位置元素的值等於前一個位置的值 *(i - j + 1) / j. i為行號,j為列號(但這裡的列不包括數字後面空格所佔位置)。
參考自-[菜鳥教程]
#include<stdio.h> #include<iostream> using namespace std; int main() { int rows, coef = 1; cout << "Enter number of rows: "; cin >> rows; for(int i = 0; i < rows; ++i) { for(int space = 0; space < rows-i-1; ++space) cout <<" "; for(int j = 0; j <= i; ++j) { if (j == 0 || i == 0) coef = 1; else coef = coef * (i - j + 1) / j; cout << coef << " "; } cout << endl; } return 0; }