前言
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