用递归算法实现n行n列个星字符的正向三角输出
时间: 2024-09-15 08:14:34 浏览: 47
递归算法可以很巧妙地用来生成正向三角形的星字符输出。这个过程通常用于基础情况和递归情况两部分:
1. **基础情况**:当`n = 0`或`n = 1`时,直接返回一行或一列的星字符。例如,对于`n = 0`,输出空字符串;对于`n = 1`,输出一个星号(*)。
```python
def print_star_triangle(n=0):
if n == 0:
return ""
elif n == 1:
return "*"
```
2. **递归情况**:对于`n > 1`,每一行都比前一行多一个星字符,并且在最右侧添加一个星号。这可以通过在当前行的基础上添加相应数量的星号并连接上一行来实现。假设当前行有`i`个星号,则下一行会有`i+1`个。可以这样定义:
```python
def print_star_triangle(n):
for i in range(n):
# 当前行的星字符数加上额外的星号
current_row = " " * (n - i - 1) + "*" * (i + 1)
print(current_row)
print_star_triangle(n - 1) # 调用自身处理剩余的三角形
```
每次循环结束时,都会调用自身一次减少`n`值,直到`n`减到1或0为止。
相关问题
用递归算法实现n行n列个星字符的正向三角输出c语言
在C语言中,你可以使用递归算法来实现n行n列星字符的正向三角输出。下面是一个简单的示例:
```c
#include <stdio.h>
// 递归函数,用于打印每一行
void printTriangle(int n, int spaces) {
// 基础情况:当行数为0时,结束递归
if (n == 0)
return;
// 打印当前行的空格(左侧对齐)
for (int i = 0; i < spaces; i++)
printf(" ");
// 打印当前行的星字符(*)
for (int j = 0; j <= n; j++)
printf("* ");
// 递归打印下一行,减少一个星字符并增加一个空格
printTriangle(n - 1, spaces + 1);
}
int main() {
int rows;
printf("Enter the number of rows: ");
scanf("%d", &rows);
printTriangle(rows, 0); // 调用函数开始打印
return 0;
}
```
在这个程序中,`printTriangle` 函数负责递归地打印每一行,通过调整每个递归层级的空格数量和星字符数量来控制三角形的形状。用户会提示输入行数,然后程序会根据这个输入生成相应的正向三角。