js 递归函数打印杨辉三角
时间: 2023-07-08 07:23:26 浏览: 93
好的,以下是用 JavaScript 编写的递归函数打印杨辉三角的代码:
```javascript
function yanghui(n) {
if (n === 1) {
return [1];
} else {
const last = yanghui(n - 1);
const current = [1];
for (let i = 1; i < n - 1; i++) {
current[i] = last[i - 1] + last[i];
}
current.push(1);
console.log(current.join(' '));
return current;
}
}
function printYanghui(n) {
for (let i = 1; i <= n; i++) {
yanghui(i);
}
}
printYanghui(5);
```
输出结果如下:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
```
注:以上代码中的 `printYanghui` 函数调用了 `yanghui` 函数,后者返回一个数组并打印出该数组中的元素。`yanghui` 函数通过递归实现了杨辉三角的生成。
相关问题
c语言递归函数求杨辉三角
下面是用C语言递归函数求杨辉三角的代码:
```c
#include <stdio.h>
int YangHui(int i, int j) {
if (j == 0 || j == i) {
return 1;
} else {
return YangHui(i-1, j-1) + YangHui(i-1, j);
}
}
int main() {
int n;
printf("请输入杨辉三角的行数:");
scanf("%d", &n);
for (int i = 0; i < n; i++) {
for (int j = 0; j <= i; j++) {
printf("%d ", YangHui(i, j));
}
printf("\n");
}
return 0;
}
```
首先,我们定义了一个名为`YangHui`的递归函数,它的参数`i`表示杨辉三角的行数,参数`j`表示杨辉三角中当前行的位置,函数返回当前位置的值。
在函数内部,我们首先判断当前位置是否在杨辉三角的边缘,如果是,就返回1,否则就递归计算上一行的相邻两个位置的值之和。
在`main`函数中,我们输入杨辉三角的行数,并使用嵌套的循环打印出整个杨辉三角。
用Python递归函数写杨辉三角问题输出第几行第几列的某个数
杨辉三角是一种按照规则排列的数字三角形,其特点是在顶部中央有一个1,每一行的首尾两数均为1,其它每个数是它肩上两数之和。例如,前几行的杨辉三角如下所示:
```
1
1 1
1 2 1
1 3 3 1
1 4 6 4 1
...
```
要用Python编写一个递归函数来获取杨辉三角中某一行的某一个数,我们可以使用组合数的概念,也就是从左至右的行号对应组合数中的n,而从左至右的列号对应组合数中的r(注意杨辉三角中列是从1开始的)。组合数C(n, r)可以用递归关系C(n, r) = C(n-1, r-1) + C(n-1, r)来定义,同时C(n, 0)和C(n, n)始终为1。
下面是一个使用递归函数计算杨辉三角中第n行第r个数的Python代码示例:
```python
def combination(n, r):
# 基本情况
if r == 0 or r == n:
return 1
# 递归关系
return combination(n-1, r-1) + combination(n-1, r)
def yanghui_triangle(n, r):
# 调用组合数函数计算
return combination(n, r)
# 示例使用函数获取杨辉三角第4行第3个数
print(yanghui_triangle(4, 3)) # 输出应为 4
```
注意,递归方法虽然简洁,但效率不高,对于大的输入可能会很慢,因为它包含大量的重复计算。在实际应用中,可以使用动态规划的方法来提高效率。
阅读全文