python写一个经典递归程序
时间: 2023-11-27 16:04:21 浏览: 29
好的,这里给你一个计算斐波那契数列的经典递归程序:
```python
def fibonacci(n):
if n <= 1:
return n
else:
return fibonacci(n-1) + fibonacci(n-2)
```
该程序将返回斐波那契数列第n项的值。注意,在n较大时,该程序的效率较低,因为它会重复计算很多项。可以使用动态规划等其他技术来优化它。
相关问题
用python写一个文件夹递归复制的程序
以下是一个使用Python编写的递归复制文件夹的程序,可以将给定目录中的所有文件和子文件夹复制到目标目录中:
```
import os
import shutil
def copy_folder(src_folder, dst_folder):
"""
递归复制文件夹
"""
if not os.path.exists(dst_folder):
os.makedirs(dst_folder)
for item in os.listdir(src_folder):
src_path = os.path.join(src_folder, item)
dst_path = os.path.join(dst_folder, item)
if os.path.isdir(src_path):
copy_folder(src_path, dst_path)
else:
shutil.copy2(src_path, dst_path)
# 测试代码
src_folder = '/path/to/source/folder'
dst_folder = '/path/to/destination/folder'
copy_folder(src_folder, dst_folder)
```
说明:
- `os.listdir()` 方法返回目录中所有文件和子文件夹的列表。
- `os.path.isdir()` 方法返回一个布尔值,表示给定路径是否是一个文件夹。
- `os.path.join()` 方法用于拼接路径。
- `os.makedirs()` 方法用于创建目录(包括所有必要的父目录)。
- `shutil.copy2()` 方法用于将文件从源路径复制到目标路径。
在上面的代码中,我们首先检查目标文件夹是否存在,如果不存在则创建它。然后,我们遍历源文件夹中的所有文件和子文件夹。如果当前项是一个文件夹,则递归调用 `copy_folder()` 方法。否则,我们使用 `shutil.copy2()` 方法将文件从源路径复制到目标路径。
python用递归写一个程序
好的,下面是一个简单的例子,使用递归计算阶乘:
```python
def factorial(n):
if n == 1:
return 1
else:
return n * factorial(n-1)
print(factorial(5)) # 输出 120
```
在这个例子中,我们定义了一个函数 `factorial`,它使用递归计算阶乘。如果 `n` 等于 1,那么返回 1,否则返回 `n` 乘以 `factorial(n-1)`,即 `n` 的阶乘。
当我们调用 `factorial(5)` 时,它会先调用 `factorial(4)`,然后 `factorial(3)`,一直递归到 `factorial(1)`,最终返回 1\*2\*3\*4\*5 = 120。