用python写递推函数 用python写递归函数

python如何用递归函数求1 2 3 4 5的值python用递归函数求1 2 3 4 5的值的方法:
1、写出临界条件
2、找这一次和上一次的关系
3、假设当前函数已经能用,调用自身计算上一次的结果 , 再求出本次的结果
代码实现如下:
python题目:要求用递归、递推和Lambda三种方式编写power(n,x)函数 。lambda不好写,写了前两个,把-2改为-7,改成-7后,我试过x必须大于4 。-2时x可以从1开始
【用python写递推函数 用python写递归函数】#递归
def power(n, x):
if abs(1/pow(n, x))abs(pow(10, -2)):
return 0#回归条件
else:
m = n1#递归因子
if(n%2==1):
return 1/pow(n, x) power(m, x)#求和奇正
else:
return -1/pow(n, x) power(m, x)#求和偶负
def power2(n, x):
sum = 0
while(1/pow(n,x)abs(pow(10, -2))):
if (n % 2 == 1):
sum = 1 / pow(n, x)
else:
sum =-1 / pow(n, x)
n= 1# 递增
return sum
if __name__ == "__main__":
x = input("请输入幂数")
x = int(x)
n = 1
sum = power(n, x)
print(sum)
n=1
sum = power2(n, x)
print(sum)
用python怎么写斐波那契数列?斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13,特别指出:第0项是0,第1项是第一个1 。从第三项开始 , 每一项都等于前两项之和 。
def fib(num):
fibs=[0,1]
#num=input('请输入婓波那契数列中的数据个数:')
for i in range(int(num)-2):
fibs.append(fibs[-2] fibs[-1])
print(fibs)
print(fibs[-2])
fib(10)
在数学上
斐波那契数列以如下被以递推的方法定义:F(0)=0,F(1)=1, F(n)=F(n - 1) F(n - 2)(n ≥ 2,n ∈ N*)在现代物理、准晶体结构、化学等领域,斐波纳契数列都有直接的应用,为此,美国数学会从 1963 年起出版了以《斐波纳契数列季刊》为名的一份数学杂志,用于专门刊载这方面的研究成果 。
利用递归函数求斐波那契值python版首先用python写递推函数我们要了解一下什么是递归 。
递归法用python写递推函数,递归法就是利用上一个或者上几个状态来求取当前状态用python写递推函数的值(个人看法) 。也可以说成函数自己调用自己的一种解决问题的策略 。因此递归法通常是依托函数来实现的,递归函数总是会有一个出口,我们在解决递归问题时,只需要找出递归的关系式以及递归函数的出口(这两个可以说是递归函数的核心了) 。下面我将在这里举求斐波那契值的例子带领着大家具体的实践一下递归法 。
很显然递归函数的递推式是:fib(n) = fib(n-1) fib(n-2) 。
递归函数的出口是当n为1时返回1,当n为0时返回0 。
最后递归函数的核心代码就可以写出了:
然后总的代码就是:
具体思路如下:
语句 return fib(n-1) fib(n-2)的意思就是向前求斐波那契值,直到n-1=1,n-2=0
因为只有第1个和第0个斐波那契值是确定的
例:
当n=3时
第一次调用函数fib会执行第三条语句(因为n1)这样求回返回fib(2) fib(1)
第二次调用函数时,因为21所有会返回fib(1) fib(0);因为1不大于1 , 所以调用函数时
会执行第二条语句返回1值 。
第三次调用函数,会执行第一和第二条语句,依次返回0和1从而求得fib(2)
fib(3)=fib(2) fib(1)
fib(2)=fib(1) fib(0)
即fib(3)=fib(1) fib(0) fib(1)=2*fib(1) fib(0)
python中解 斐波那契数递推公式不能理解?第一张图
def f(n):
if n==1 or n==2:
return 1
else:
return f(n-1) f(n-2)
b=f(6)
print(b)
源代码(注意源代码用python写递推函数的缩进)
第一张图是斐波那契数列用python写递推函数的递归程序,其过程是
f(6)=f(5) f(4)=f(4) f(3) f(3) f(2)=f(3) f(2) f(2) f(1) f(2) f(1) f(2)
=f(2) f(1) f(2) f(2) f(1) f(2) f(1) f(2)
因为f(2)=f(1)=1所以上式=1 1 1 1 1 1 1 1=8
第二张图
def fact(n):
if n==0:
return 1
else:
return n*fact(n-1)
b=fact(5)
print(b)
源代码(注意源代码的缩进)
第二张图是阶乘的递归程序,其过程是
fact(5)=5*fact(4)=5*4*fact(3)=5*4*3*fact(2)=5*4*3*2*fact(1)=5*4*3*2*1*fact(0)
因为fact(0)=1,所以上式=5*4*3*2*1*1=120
详细解释,
因为n等于5所以执行else语句返回5*fact(4)
n等于4所以执行else语句返回4*fact(3)
n等于3所以执行else语句返回3*fact(2)
n等于2所以执行else语句返回2*fact(1)
n等于1所以执行else语句返回1*fact(0)
n等于0所以执行if语句返回1
然后反向回归
fact(1)=1*1
fact(2)=2*1*1
fact(3)=3*2*1*1
fact(4)=4*3*2*1*1
fact(5)=5*4*3*2*1*1=120
深入理解Python reduce函数 例如上面的例子,实现一个整形集合的累加 。假设lst = [1,2,3,4,5],实现累加的方式有很多:
第一种:用sum函数 。
sum(lst)
第二种:循环方式 。
def customer_sum(lst):
result = 0
for x in lst:
result =x
return result
def customer_sum(lst):
result = 0
while lst:
temp = lst.pop(0)
result =temp
return result
ifname ==" main ":
lst = [1,2,3,4,5]
print customer_sum(lst)
第三种:递推求和
def add(lst,result):
if lst:
temp = lst.pop(0)
temp =result
return add(lst,temp)
else:
return result
ifname ==" main ":
lst = [1,2,3,4,5]
print add(lst,0)
第四种:reduce方式
lst = [1,2,3,4,5]
print reduce(lambda x,y:x y,lst)
lst = [1,2,3,4,5]
print reduce(lambda x,y:x y,lst,0)
def add(x,y):
return x y
print reduce(add, lst)
def add(x,y):
return x y
print reduce(add, lst,0)
有一个序列集合,例如[1,1,2,3,2,3,3,5,6,7,7,6,5,5,5],统计这个集合所有键的重复个数,例如1出现了两次,2出现了两次等 。大致的思路就是用字典存储,元素就是字典的key,出现的次数就是字典的value 。方法依然很多
第一种:for循环判断
def statistics(lst):
dic = {}
for k in lst:
if not k in dic:
dic[k] = 1
else:
dic[k]=1
return dic
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print(statistics(lst))
第二种:比较取巧的,先把列表用set方式去重,然后用列表的count方法
def statistics2(lst):
m = set(lst)
dic = {}
for x in m:
dic[x] = lst.count(x)
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print statistics2(lst)
第三种:用reduce方式
def statistics(dic,k):
if not k in dic:
dic[k] = 1
else:
dic[k]=1
return dic
lst = [1,1,2,3,2,3,3,5,6,7,7,6,5,5,5]
print reduce(statistics,lst,{})
或者
d = {}
d.extend(lst)
print reduce(statistics,d)
通过上面的例子发现,凡是要对一个集合进行操作的,并且要有一个统计结果的 , 能够用循环或者递归方式解决的问题,一般情况下都可以用reduce方式实现 。
用python写递推函数的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于用python写递归函数、用python写递推函数的信息别忘了在本站进行查找喔 。

    推荐阅读