题目
题目描述
x 的阶乘,即= x * (x-1) * (x-2) * ··· * 2 * 1。
输入一个整数 m,计算并输出其阶乘的值。输入格式 一个整数。
输出格式 一个整数。
一道数学题,让电脑来解,怎么写,想一下,for in 解了,就试一下
解法一
m=int(input())
sum=1
for i in range(1,m+1):
sum=sum*i
print(sum)
运行一下,可以算。打开题解,发现里面有部分人用递归来解,不懂,打开csdn学习起来!
递归
函数定义中调用函数自身的方式称为递归,阶乘就是一个典型的例子,直接以上面的问题为例子,
解法二
用法1:递归
m=int(input())
def function(x):
if x==0:
return 1
else:
return x*function(x-1)
print(function(m))
还见到递归在算法题中的一种用法
用法2:回文
即字符串反转,例如输入123,回文后得到 321
用函数递归实现如下
a=input()
def huiwen(x):
if len(x)==1:
return x
else:
return x[-1]+huiwen(x[:len(x)-1])
print(huiwen(a))
因为刚开始做,碰到的题很少,还没有见到其他用递归解的题,以后碰到慢慢用吧