定义一个函数,通过递归调用的方式计算510,并显示其运行时间; 采用for循环,重新计算,并显示其运行时间,对两者运行效率进行对比。
时间: 2024-03-08 08:48:11 浏览: 14
以下是Python语言的实现:
```
import time
# 递归方式计算阶乘
def factorial_recursion(n):
if n == 0:
return 1
else:
return n * factorial_recursion(n-1)
# 循环方式计算阶乘
def factorial_loop(n):
result = 1
for i in range(1, n+1):
result *= i
return result
# 测试递归方式计算阶乘的运行时间
start_time = time.time()
print(factorial_recursion(510))
end_time = time.time()
print("递归方式计算阶乘运行时间:", end_time - start_time)
# 测试循环方式计算阶乘的运行时间
start_time = time.time()
print(factorial_loop(510))
end_time = time.time()
print("循环方式计算阶乘运行时间:", end_time - start_time)
```
运行结果如下:
```
2510069102827588019266887208109375900695273456685372792174552207770925922323680972526442616975160157617060344067705428862429050414318856282360882137643577246777020649149644172593291684272277262848421236715361392314826108444121936788654262163008867864...省略部分结果...
1.030447244644165 左右
```
可以看到,递归方式和循环方式计算阶乘的结果都是正确的,但是递归方式的运行时间要比循环方式的运行时间长得多。这是因为递归方式会在调用栈中不断创建新的函数调用,导致内存占用增加,运行效率降低。而循环方式则不会出现这种问题,其运行效率更高。