C++ 实现杨辉三角

下面为杨辉三角的表现形式

                          1
                         1   1   
                       1   2   1   
                     1   3   3   1   
                   1   4   6   4   1   
                 1   5   10  10  5   1   
               1   6   15  20  15  6   1   
             1   7   21  35  35  21  7   1   
           1   8   28  56  70  56  28  8   1   
         1   9   36  84  126 126 84  36  9   1   
       1   10  45  120 210 252 210 120 45  10  1   
     1   11  55  165 330 462 462 330 165 55  11  1    
   1   12  66  220 495 792 924 792 495 220 66  12  1
...

可以用递归的方法来实现,代码如下:

#include <iostream>
using namespace std;

int* returnArray(int N);
int main() {


    int N;
    cin >> N;
    for (int i = 1; i <= N; i++) {
        int *A = returnArray(i);
        for (int j = 0; j < i; j++) {
        cout << A[j];
        cout << " ";
    }
        cout << endl;
    }   

}

int* returnArray(int N) {
    int *a = new int[N];
    if (N == 1) {
        a[0] = 1;
        return a;
    }
    else if(N == 2) {
        a[0] = 1;
        a[1] = 1;
        return a;
    }
    else {
        int* b = returnArray(N - 1);
        for (int i = 1; i < N - 1; i++) {
            a[i] = b[i] + b[i - 1];
        }
        a[0] = 1;
        a[N - 1] = 1;
        return a;
    }

}

注意:返回数组最好用动态数组,返回地址。

    原文作者:杨辉三角问题
    原文地址: https://blog.csdn.net/u011040361/article/details/46279981
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞