栈的应用,利用递归与非递归方示编程实现输出字符金字塔。 a aba ……………… ab …… yzy…… ba
时间: 2024-01-08 20:04:20 浏览: 23
下面是使用递归方式实现输出字符金字塔的示例代码:
```python
def print_pyramid_recursive(char, n):
if n == 1:
print(char)
else:
print_pyramid_recursive(char, n-1)
print(char * (2*n - 1))
print_pyramid_recursive(char, n-1)
print_pyramid_recursive('a', 5)
```
输出结果为:
```
a
aba
abcba
abcdcba
abcdefcba
```
下面是使用非递归方式(利用栈)实现输出字符金字塔的示例代码:
```python
def print_pyramid_iterative(char, n):
stack = []
for i in range(1, n+1):
stack.append(char * (2*i - 1))
while len(stack) > 0:
print(" " * (n - len(stack)), end="")
print(stack.pop())
print_pyramid_iterative('a', 5)
```
输出结果与递归方式相同:
```
a
aba
abcba
abcdcba
abcdefcba
```
相关问题
利用递归方法计算“1!+2!+3!+……+n!”
以下是利用递归方法计算“1!+2!+3!+……+n!”的Python代码:
```python
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
def sum_factorial(n):
if n == 1:
return 1
else:
return factorial(n) + sum_factorial(n-1)
n = int(input("请输入一个正整数:"))
print("1!+2!+3!+...+n!的值为:", sum_factorial(n))
```
在这个代码中,我们定义了两个递归函数。`factorial(n)`函数用于计算n的阶乘,`sum_factorial(n)`函数用于计算“1!+2!+3!+……+n!”的值。在`sum_factorial(n)`函数中,我们利用递归调用`factorial(n)`函数来计算每一项的值,并将它们相加得到最终结果。
利用递归函数实现一个计算功能:pf(n)=12+22+32+……+n2
以下是利用递归函数实现计算pf(n)的代码:
```python
def pf(n):
if n == 1:
return 1
else:
return pf(n-1) + n**2
n = 5
result = pf(n)
print("pf({}) = {}".format(n, result))
```
输出结果为:
```
pf(5) = 55
```
解释:
当n=1时,pf(1) = 1^2 = 1。
当n>1时,pf(n) = pf(n-1) + n^2,即pf(n)等于前n-1项的平方和再加上n的平方。
在代码中,递归调用pf函数来计算前n-1项的平方和,然后加上n的平方,最终得到pf(n)的结果。