斐波那契数列自第三个数开始,每个数均为之前两个数的和。
至少有两种方法来实现它。
最常见的利用迭代的方法,其核心思路是
fib(n) =fib(n-1) +fib(n-2)
而在n<2时直接,没有n-2,因此直接返回1:
def fib(num): return 1 if n<2 else fib(num-1) + fib(num-2)
这是一种很简单的实现。在阶梯数不大时,它很好用。当阶梯数很大时,因为二次手迭代,会比较慢。因此,可以在计算中保存中间值(1至n-1的阶梯数)来减少计算量:
这种方式在计算阶梯数10000时就可以保持不错的性能。如果需要多次计算该数列,则可以利用对象来保持这个中间值列表,下列代码中,Fibonaci实例只计算未曾计算的阶梯数,在重复调用时它更具优势:
class Fibonaci(object):
....history=[1, 1]
....def cacl(self, num):
........while len(self.history) <= num:
............self.history.append(self.history[-1] + self.history[-2])
........returnself.history[num]
if __name__ == '__main__':
....fib =Fibonaci()
....print(fib.calc(100))
....print(fib.calc(32))
....print(fib.calc(10000))
B. 用python循环解答 有数列2/3、4/5、6/9、10/15……求此数列前30项的和。
你可以使用 Python 的循竖贺棚环语句来解决这个问题。
首先,可以定义一个变量 sum 来记录数列的和,并将其初始化为 0。然后,使拍兄用 for 循环迭代数列的前 30 项,并将每一项的值加到 sum 中。最后,输出 sum 的值,就可以得到数列前 30 项的和了。
下面是一个示例代码,它使用 Python 的循环语句来解决这个问题:
sum = 0 # 初始化 sum 为余则 0
# 迭代数列的前 30 项
for i in range(1, 31):
# 计算数列的第 i 项的值
value = (i * 2 + 1) / (i * 2 + 2)
# 将第 i 项的值加到 sum 中
sum += value
# 输出数列前 30 项的和
print(sum)
运行上述代码后,会在屏幕上输出数列前 30 项的和。
C. python中的for i in range怎么用
在Python编程中,"for i in range"是一个常用的控制结构,用于实现从一个整数开始到另一个整数(不包括该数)的序列迭代。这个结构的基本语法是:for i in range(a, b, c),其中a是起始值(默认为0),b是结束值(不包含),c是步长(默认为1)。让我们通过几个例子来直观理解它的用法。
当使用for i in range(1, 101, 1),代码会打印从1到100的所有整数,每次循环i会递增1,直到达到100为止。这相当于一个计数器,逐个遍历指定范围内的数值。
例如,for i in range(3)会输出0, 1, 2,这里的起始值是3的前两个整数,步长是1,循环3次。
另一方面,如果我们尝试反向计数,如for i in range(10, 0, -1),则会从10开始递减到1,输出序列是10, 9, 8, ..., 1。这里,步长为-1,意味着每次循环i都会减1。
总的来说,range函数是Python中实现序列迭代和控制循环次数的便捷工具。通过理解并灵活运用这个功能,我们可以轻松地编写出高效的代码。
D. python中的range函数
Python2.X range()函数可创建一个整数列表,一般用在for循环中。
Python3 range()函数返回的是一个可迭代对象,类型是对象,而不是列表类型,所以打印的时候不会打印列表。
Python3 list()函数是对象迭代器,可以把range()返回的可迭代对象转为一个列表,返回的变量类型为列表。
Python2 range()函数返回的是列表。
Python range()函数语法
range(start, stop[,step])
参数说明:
start:计数从start开始,默认是从0开始;比如:range(5)等价于range(0,5)。
stop:计数到stop结束,但不包括stop;比如:range(0,5)是[0, 1, 2, 3, 4]没有5。
step:步长,默认为1;比如:range(0,5)等价于range(0,5,1)。