关于斐波那契数列 ╰半夏微凉° 2022-09-24 00:23 95阅读 0赞 # 斐波那契数列 # ## 代码1 ## // 分分钟写出来的代码 int fib(int n) { if (n == 0 || n == 1) return n; return fib(n-1) + fib(n-2); } ## 分析代码1 ## 递归使整个代码非常简洁,然而代码是有问题的 1. 考虑n值特别大的情况,上万的一个值,递归可能使栈溢出(OOM), 2. 递归调用是非常耗时的操作,可是函数调用开销大,递归层次非常多时,整个进程就卡死了。 3. 考虑过返回值两个int值之和可能溢出的问题吗? ## 代码2 ## // 考虑1和2的问题,通常递归都能写成迭代循环的方式 int fib2(int n) { if (n == 0 || n == 1) return n; // 斐波那契数列 0,1,1,2,...,prev1,prev2,cur,... int prev1 = 0, prev2 = 1; int cur; for (int i = 2; i <= n; i++) { cur = prev1 + prev2; prev1 = prev2; prev2 = cur; } return cur; } ## 代码2分析 ## 迭代的方式解决了代码1中1和2 的问题,计算机执行迭代非常快,而且栈的使用也非常少。 然而并没有解决3,整型变量之和溢出的问题? // 据测试n = 49就溢出了 [renwotao@localhost workspace]$ ./fib 100 fab2(100) = -980107325 [renwotao@localhost workspace]$ ./fib 50 fab2(50) = -298632863 [renwotao@localhost workspace]$ ./fib 20 fab2(20) = 6765 [renwotao@localhost workspace]$ ./fib 40 ## 关于代码中问题3的解决 ## 无论是int和long还是long long ,只要是有符号整型,在相同符号相加或不同符号相减都有可能溢出,即结果超出有符号整型的表示范围。在科学计算中,采用[高精度算法][Link 1]来处理大数字的数学计算。 [Link 1]: http://baike.baidu.com/link?url=5DD1NruJDBRCySne-89DUVwFJrj6HwX6_hOl1ZEtYiR05JqG6i23OGvWqizy3dj-
相关 斐波那契数列 斐波那契数,指的是这样一个数列:1、1、2、3、5、8、13、21、……在数学上,斐波那契数列以如下被以递归的方法定义:F0=0,F1=1,Fn=Fn-1+Fn-2(n>=2, Love The Way You Lie/ 2022年11月19日 04:15/ 0 赞/ 235 阅读
相关 斐波那契数列 \\题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 思路 1. 递归(函数栈调用消耗 ゝ一纸荒年。/ 2022年10月29日 06:26/ 0 赞/ 35 阅读
相关 关于斐波那契数列 斐波那契数列 代码1 // 分分钟写出来的代码 int fib(int n) { if (n == 0 || n = ╰半夏微凉°/ 2022年09月24日 00:23/ 0 赞/ 96 阅读
相关 斐波那契数列 // 斐波那契数列.cpp : 定义控制台应用程序的入口点。 // \include "stdafx.h" \include<iostream> usin 谁践踏了优雅/ 2022年08月23日 14:45/ 0 赞/ 64 阅读
相关 斐波那契数列 关于斐波那契数列的解法,本人找到了一种比较简单的方法,结果是正确的,不知道各位有没有另外更好的解法,一起探讨探讨。 import java.util.; pu ╰+攻爆jí腚メ/ 2022年08月01日 12:15/ 0 赞/ 353 阅读
相关 斐波那契数列 定义:斐波那契数列指的是这样一个数列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, … 这个数列从第三项开始,每一项都等于前两项之和。 矫情吗;*/ 2022年07月13日 04:49/ 0 赞/ 307 阅读
相关 斐波那契数列 斐波那契数列指的是这样一个数列 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233,377,610,987,1597, 冷不防/ 2022年07月13日 03:19/ 0 赞/ 327 阅读
相关 斐波那契数列 class FibIter(object): def __init__(self, lenth): self.lent 一时失言乱红尘/ 2022年05月27日 13:51/ 0 赞/ 324 阅读
相关 斐波那契数列 include<iostream> using namespace std; int fibonacci1(int t) { if(t 古城微笑少年丶/ 2022年05月09日 08:58/ 0 赞/ 290 阅读
相关 斐波那契数列 ![1234096-20171112230708606-1911525192.png][] 转载于:https://www.cnblogs.com/ostrich-sugar た 入场券/ 2022年01月06日 23:41/ 0 赞/ 351 阅读
还没有评论,来说两句吧...