标题:用递归实现杨辉三角
只看楼主
lidepeng1995
Rank: 2
等 级:禁止访问
帖 子:30
专家分:43
注 册:2018-7-8
结帖率:100%
已结贴  问题点数:20 回复次数:4 
用递归实现杨辉三角
给定一个非负整数 numRows,生成杨辉三角的前 numRows 行。


在杨辉三角中,每个数是它左上方和右上方的数的和。

示例:

输入: 5
输出:
[
     [1],
    [1,1],
   [1,2,1],
  [1,3,3,1],
 [1,4,6,4,1]
]
搜索更多相关主题的帖子: 个数 递归 输出 示例 杨辉三角 
2020-03-22 16:17
自学的数学
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:46
帖 子:967
专家分:4146
注 册:2017-11-15
得分:7 
程序代码:
#include <stdio.h>
int main()
{
int i ,j,row ;
int a[100][100]={0};
printf("请输入行数:");
scanf("%d",&row);
for(i=0;i<row;i++)
{
for(j=0;j<i+1;j++)
{
if(j==0||j==i)
{
a[i][j]=1;
}
else
{
a[i][j]=a[i-1][j-1]+a[i-1][j];
}
printf("%d ",a[i][j]);
}
printf("\n");
}
}
2020-03-22 16:48
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:7 
程序代码:
#include <stdio.h>

void printtriangle(int* arr, int lev, int end)
{
    if(lev == end)
        return;

    arr[lev++] = 1;
    for(int i=0; i<lev; ++i)
        printf("%8d", arr[i]);
    arr[lev] = 0;
    for(int i=lev; i>0; --i)
        arr[i] += arr[i-1];
    puts("");

    printtriangle(arr, lev, end);
} 

void triangle(int end)
{
    int arr[100];
    printtriangle(arr, 0, end);    
}

int main(int argc, char *argv[])
{
    triangle(5);
    return 0;
}


[此贴子已经被作者于2020-3-22 19:17编辑过]


https://zh.
2020-03-22 19:14
wmf2014
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
等 级:贵宾
威 望:216
帖 子:2039
专家分:11273
注 册:2014-12-6
得分:7 
杨辉三角的m行n列的数据都是和上一行的数据有关,具体分析可知就是上一行的n列的数据和上一行的n-1列数据之和,要用递归解决是典型的回溯递推函数,和斐波那契数列递归实现方法类似。代码如下:
程序代码:
#include <stdio.h>
int fun(int m,int n)
{
    if(m==1||n==1||m==n)return 1;
    return fun(m-1,n)+fun(m-1,n-1);
}
void main()
{
    int i,j,n=8;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n-1-i;j++)printf("  ");   //按等腰三角形格式输出
        for(j=0;j<=i;j++)printf("%2d  ",fun(i+1,j+1));
        printf("\n");
    }
}


运行结果:
               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  
Press any key to continue


[此贴子已经被作者于2020-3-23 00:50编辑过]

收到的鲜花
  • 叶纤2020-03-23 12:05 送鲜花  1朵   附言:花一般的美丽

能编个毛线衣吗?
2020-03-23 00:11
lin5161678
Rank: 12Rank: 12Rank: 12
等 级:贵宾
威 望:45
帖 子:1136
专家分:3729
注 册:2011-12-3
得分:0 
回复 4楼 wmf2014
两路递归实现比较糟糕
重复计算太多了
哪怕你加一个记忆剪枝也行呀

https://zh.
2020-03-23 01:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-500510-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.085791 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved