杨辉三角形 C++ 无需数组
问题描述:
请打印出下列三角形:
很明显,第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; }