下面的图形是著名的杨辉三角形: 如果我们按从上到下、从左到右的顺序把所有数排成一列,可以得到如下数列:1, 1, 1, 1, 2, 1, 1, 3, 3, 1, 1, 4, 6, 4, 1, … 给定一个正整数 N,请你输出数列中第一次出现 N 是在第几个数?完整C语言
时间: 2023-09-03 10:16:41 浏览: 186
实现如下:
```c
#include <stdio.h>
// 计算杨辉三角的第n行第k个数
int yangHui(int n, int k)
{
if (k == 1 || k == n) {
return 1;
} else {
return yangHui(n - 1, k - 1) + yangHui(n - 1, k);
}
}
int main()
{
int n;
printf("请输入要查找的数N:");
scanf("%d", &n);
int i, j, count = 0;
for (i = 1; ; i++) {
for (j = 1; j <= i; j++) {
count++;
if (yangHui(i, j) == n) {
printf("第一次出现%d是在第%d个数\n", n, count);
return 0;
}
}
}
return 0;
}
```
程序的思路是:先定义一个递归函数 `yangHui(n, k)`,用来计算杨辉三角的第n行第k个数。然后在 `main` 函数中,依次遍历数列中的每一个数,计算出对应的杨辉三角行和列,然后调用 `yangHui(n, k)` 函数计算出该数,判断是否等于目标数N,如果是,则输出结果并退出程序。
阅读全文