杨辉三角的递归实现

前言

NWAFU P1549


一、题目描述

杨辉三角是众所周知的二项式系数按三角形形式的一种几何排列。 其m行,n列的系数可以按以下公式由当前项与同一行的前一项之间的递推关系计算得到: 

现要求在下面的代码中指定的5个空白处将代码补充完整,以输出指定n行的杨辉三角形,其中n<=13。

#include <stdio.h>

int getBinomialCoefficient(______1_______)
{
    if (n == 0) return 1;
    else return getBinomialCoefficient(m, n - 1) * _____2_____;
}

void printYangHuiTriangle(int n)
{
	int i, j, k, a = 1;

	for (i = 0; i < n; i++)
	{
        for (k = 3 * (n - i - 1); k > 0; ____3____)
		{
			printf(" ");
		}
		for (j = 0; ____4____; j++)
		{
           printf("%5d ", getBinomialCoefficient(i, j));
		}
		____5____;
	}
}

int main()
{
    printYangHuiTriangle(13);
    return 0;
}

提示

注意:在编写递归代码时,不能任意添加括号以改变计算次序。且不可以更改代码结构,只允许在指定空白处填写必要代码。 

二、设计步骤

1.填写形参列表

2.根据题目公式编写函数递归

3.循环条件k--

4.函数参数

5."\n"

代码实现:

int getBinomialCoefficient(int m,int n)                 //1.填写形参列表
{
    if (n == 0) return 1;
    else return getBinomialCoefficient(m, n - 1) * (m - n + 1) /n;     //2.根据题目公式编写函数递归
}
 
void printYangHuiTriangle(int n)
{
    int i, j, k, a = 1;
 
    for (i = 0; i < n; i++)
    {
            for (k = 3 * (n - i - 1); k > 0;k--)      //3.循环条件k--
        {
                printf(" ");
        }
        for (j = 0; j <= i; j++)
        {
                printf("%5d ", getBinomialCoefficient(i, j));      //4.函数参数
        }
        printf("\n");                                              //5."\n"
    }
}

总结

EOF

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值