递推函数python 递推函数法

用python编写递推算法,计算数列 1,2,4,7,11,16... 前30个数之和?# 定义递推函数
def sequence(n):
if n == 1:
return 1
else:
return sequence(n-1) + n + 1
# 计算数列前 30 个数之和
sum = 0
for i in range(1, 31):
sum += sequence(i)
print("数列前 30 个数之和为:", sum)
解释一下代码:
我们首先定义了一个递推函数 sequence(n),用于计算数列的第 n 项的值 。根据数列的规律,第 n 项的值等于第 n-1 项的值加上 n,再加上 1 。当 n 等于 1 时 , 数列的第一项为 1 。
然后 , 我们使用 for 循环计算数列的前 30 个数之和,将每个数列项的值传递给递推函数,计算出数列的第 i 项的值,然后将其加到 sum 变量中 。
最后,我们输出数列前 30 个数之和的值 。
python斐波那契数列代码如下所示 。
数学中有个著名的斐波那契数列(Fibonaccisequence) , 又称黄金分割数列,数学家列昂纳多·斐波那契(LeonardodaFibonacci)以兔子繁殖为例子而引入,故又称为“兔子数列”,这个数列中第一个数为0,第二个数为1,其后的每一个数都可由前两个数相加得到 , 如下所示:
0,1,1,2,3,5,8,13,21,34,
在数学上 , 斐波那契数列以如下被以递推的方法定义:F(1)=1,F(2)=1,F(n)=F(n-1)F(n-2)(n=3,n∈N*)在现代物理、准晶体结构、化学等领域 , 斐波纳契数列都有直接的应用,在本文中我们通过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题目:要求用递归、递推和Lambda三种方式编写power(n,x)函数 。lambda不好写,写了前两个,把-2改为-7,改成-7后,我试过x必须大于4 。-2时x可以从1开始
#递归
def power(n, x):
if abs(1/pow(n, x))abs(pow(10, -2)):
return 0#回归条件
else:
m = n + 1#递归因子
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

推荐阅读