Fibnacci序数(1)

本文介绍了一个使用C++编写的程序,该程序通过迭代方法计算并输出斐波那契数列的第20个数。斐波那契数列从0和1开始,后续每个数都是前两个数的和。
/* 
* 程序的版权和版本声明部分 
* Copyright (c)2012, 烟台大学计算机学院学生 
* All rightsreserved. 
* 文件名称: fibnacci.cpp 
* 作 者:杨绍宁
* 完成日期:2012 年 11月21 日 
* 版本号: v1.0 
* 
* 输入描述:无 
* 问题描述:输出 Fibnacci 序列的第 20 个数,Fibnacci 序列形如 0,1,1,2,3,5,8... 
* 程序输出:Fibnacci 序列中的第 20 个数 
* 问题分析:采用迭代的方法…… 
*/     
#include<iostream>
using namespace std;
int fib(int n);
int main()
{
	cout<<fib(20)<<endl;
	return 0;
}
int fib(int n)
{
	int i, x=0,y=1,sum;
	for(i=1;i<=18;++i){
	
		sum=x+y;
		x=y;
		y=sum;
		
		
	}
	return sum;
}


感受:迭代就是for、while循环

### Python 中的 Fibonacci 库 在 Python 生态系统中存在多种实现斐波那契序列的方法,不仅限于标准库中的功能。对于更高级的需求,可以考虑使用专门处理数值算法或提供高效数据结构支持的第三方库。 #### 使用 `sympy` 实现斐波那契数列 SymPy 是一个用于符号数学运算的强大库,在其中包含了对斐波那契数的支持: ```python from sympy import fibonacci print([fibonacci(i) for i in range(10)]) ``` 这段代码会打印前十个斐波那契数[^5]。 #### 利用 NumPy 进行向量化操作 NumPy 提供了高效的数组操作接口,虽然它本身并不直接提供斐波那契函数,但是可以通过矩阵快速幂等方式来加速计算大范围内的斐波那契数值: ```python import numpy as np def matrix_mult(A, B): return [[sum(a * b for a, b in zip(row_A, col_B)) % 1000000007 for col_B in zip(*B)] for row_A in A] def power(F, n): M = [[1, 1], [1, 0]] if n == 0 or n == 1: return F mat_power = power(matrix_mult(M, M), int(n / 2)) if n % 2 != 0: return matrix_mult(mat_power, M) else: return mat_power def fibo_numpy(n): F = [[1, 1], [1, 0]] if (n == 0): return 0; power(F, n - 1); return F[0][0]; print([fibo_numpy(i) for i in range(10)]) ``` 此方法适合求解较大索引处的斐波那契值,并且能够有效减少时间复杂度[^6]。 #### 自定义生成器方式 除了上述提到的标准模块外部依赖外,还可以基于协程特性构建自定义的斐波那契数发生器,这与提供的生成器版本相似[^2]: ```python def fibon(n): a, b = 0, 1 count = 0 while True: if(count >= n): break yield a a, b = b, a + b count += 1 list(fibon(10)) ``` 这种方法允许按需迭代获取下一个斐波那契项而不必预先分配整个列表空间,非常适合内存敏感的应用场景。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值