递归处理杨辉三角形
什么思路可以使得递归能够解决问题?
首先,确定问题如何来分立的解决,给定n,输出n行的杨辉三角形,那么我们就可以从每一行的数据进行入手准备
由此就可以使用递归处理,最最关键的一步是每一次的递归内怎么迭代处理数组数据?
g[k][i] = g[k - 1][i - 1] + g[k - 1][i]就是数据的处理方式
根据上面的数据处理,得知,我们数组的起始应该是从1开始,不然的话,行数或者列数减去1后会发生数组越界。
#include<iostream>
using namespace std;
const int N = 40;
int g[N][N];
int n;
void solve(int k)
{
if (k > n)
return ;
for (int i = 1; i <= k; i ++)
{
g[k][i] = g[k - 1][i - 1] + g[k - 1][i];//数组处理数据方程
cout << g[k][i] << " ";//循环输出当前这一行的杨辉三角形
}
puts("");//换行
solve(k + 1);// 递归进入到下一行的数据输出
}
int main()
{
g[0][0] = 1; //初始化左上角的数据,以便于后面的每一次数据处理,可以得到相应的数据
cin >> n;
solve(1);
}