n!用Python的迭代算法和递归算法的代码
时间: 2024-03-01 12:53:56 浏览: 210
下面是使用迭代算法和递归算法分别计算 n! 的 Python 代码:
迭代算法:
```python
def factorial_iterative(n):
result = 1
for i in range(1, n+1):
result *= i
return result
```
这个算法使用一个循环语句来计算 n!,从1到n逐一相乘,并将结果存储在变量result中。
递归算法:
```python
def factorial_recursive(n):
if n == 0:
return 1
else:
return n * factorial_recursive(n-1)
```
这个算法使用递归来计算 n!,如果n等于 0,则返回 1,否则返回n和n-1的阶乘的乘积。这里的关键点是函数调用自身,直到n变为0时停止递归。
需要注意的是,递归算法在计算过程中会不断调用自己,因此可能会导致调用栈溢出的问题。对于大的n,迭代算法的性能也会更好。
相关问题
2、使用迭代和递归算法计算,猴子跳台阶的问题:有一只淘气的猴子一次可以跳1个台阶,也可以一次跳2个台阶,还以一次跳3个台阶,现有n个台阶,猴子从第1台阶跳到第n个台阶总共有多少种跳法。(分别使用迭代算法和递归算法分别实现) 源程序及运行结果:
以下是使用迭代算法实现的代码:
```python
def monkey_jump_iter(n):
if n == 1:
return 1
elif n == 2:
return 2
elif n == 3:
return 4
else:
a, b, c = 1, 2, 4
for i in range(4, n+1):
temp = a + b + c
a, b, c = b, c, temp
return temp
```
以下是使用递归算法实现的代码:
```python
def monkey_jump_recur(n):
if n == 1:
return 1
elif n == 2:
return 2
elif n == 3:
return 4
else:
return monkey_jump_recur(n-1) + monkey_jump_recur(n-2) + monkey_jump_recur(n-3)
```
测试代码:
```python
n = 10
print("迭代算法结果:", monkey_jump_iter(n))
print("递归算法结果:", monkey_jump_recur(n))
```
输出结果:
```
迭代算法结果: 274
递归算法结果: 274
```
设计求n!(n为正整数)的非递归算法和递归算法
设计一个计算阶乘的非递归算法通常可以采用循环结构,例如使用for或while循环迭代相乘的过程。以下是Python的一个例子:
**非递归算法(迭代法)**:
```python
def factorial_iterative(n):
result = 1
for i in range(1, n+1):
result *= i
return result
```
在这个函数中,我们从1开始乘到n,每次将结果乘以当前的数。
**递归算法**:
虽然递归不是必需的,但在某些语言如Python中编写起来更简洁,尽管效率较低因为存在函数调用开销。这里是递归版本:
```python
def factorial_recursive(n):
if n == 0 or n == 1:
return 1
else:
return n * factorial_recursive(n - 1)
```
这个函数通过基本情况`n == 0` 或 `n == 1` 返回1,然后对于大于1的n,它会调用自身并将结果乘以n。
阅读全文