帮我用python 写一个简单的递归算法
时间: 2023-02-18 18:38:08 浏览: 51
def recursion(n):
if n == 1:
return 1
else:
return n * recursion(n-1)
print(recursion(5))
相关问题
使用python写一个递归算法
当然可以!下面是一个使用Python编写的递归算法示例,用于计算一个数的阶乘:
```python
def factorial(n):
if n == 0:
return 1
else:
return n * factorial(n-1)
# 测试
num = 5
print("Factorial of", num, "is", factorial(num))
```
在上述代码中,我们定义了一个名为`factorial`的递归函数。当输入的参数`n`为0时,函数直接返回1。否则,函数会调用自身并将`n-1`作为参数传入,然后将结果与`n`相乘返回。
请注意,递归算法必须具备两个关键要素:基本情况(在这里是`n == 0`)和递归调用(在这里是`n * factorial(n-1)`)。没有基本情况,递归函数将陷入无限循环。没有递归调用,递归函数将无法继续向下进行计算。
希望这个例子对你有所帮助!如果你有其他问题,请随时提问。
用python编写一个用递归算法实现的组合问题
以下是使用递归算法解决组合问题的Python代码:
```python
def combinations(n, k):
if k == 0 or k == n:
return 1
else:
return combinations(n-1, k-1) + combinations(n-1, k)
n = int(input("请输入n的值:"))
k = int(input("请输入k的值:"))
result = combinations(n, k)
print("{}个元素中选取{}个元素的组合数为:{}".format(n, k, result))
```
解释:
首先定义了一个函数`combinations(n, k)`,接受两个参数n和k,表示从n个元素中选取k个元素的组合数。
如果k=0或者k=n,表示选取0个元素或者选取全部n个元素,此时组合数为1。
对于其他情况,我们可以把选取k个元素的方案分成两类:包含第n个元素和不包含第n个元素。如果包含第n个元素,那么从剩下的n-1个元素中选取k-1个元素;如果不包含第n个元素,那么从剩下的n-1个元素中选取k个元素。因此,选取k个元素的组合数等于包含第n个元素的方案数加上不包含第n个元素的方案数。
最后,我们可以在主程序中输入n和k的值,调用`combinations(n, k)`函数计算组合数,并输出结果。
示例输出:
```
请输入n的值:5
请输入k的值:3
5个元素中选取3个元素的组合数为:10
```