递归处理杨辉三角形

什么思路可以使得递归能够解决问题?

首先,确定问题如何来分立的解决,给定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);
}