php专区

 首页 > php专区 > PHP进阶 > 算法 > 不使用递归如何求裴波那契数列

不使用递归如何求裴波那契数列

分享到:
【字体:
导读:
         摘要:裴波那契数列1,1,2,3,5,8,13,21…………,一般来说使用递归会使问题简单很多。但是有些时候会要求我们不用递归解决这类问题,比如Lisp这种不支持递归的语言,或者对程序的执行效率要求很高,或者面试等等场合。本文给出一种不使用递归求解裴波那契数列的方案。 ...

不使用递归如何求裴波那契数列

裴波那契数列 1,1,2,3,5,8,13,21…………,一般来说使用递归会使问题简单很多。但是有些时候会要求我们不用递归解决这类问题,比如Lisp这种不支持递归的语言,或者对程序的执行效率要求很高,或者面试等等场合。本文给出一种不使用递归求解裴波那契数列的方案。

下面是递归的解法:

public int sum(int n)
{
  if(n<3)
    return 1;
  else
    return sum(n-1) + sum(n-2);
}

不使用递归的话可以用下面的函数实现:

public int sum(int n)
{
  if(n<3)
    return 1;
  else
  {
    int base1 = 1;
    int base2 = 1; int temp;
    for(int i=3; i<=n; i++)
    {
      temp = base2;
      base2 += base1;
      base1 = temp;
    }
    return base2;
  }
}

PHP程序测试如下:

    

本文地址:http://www.nowamagic.net/librarys/veda/detail/364,欢迎访问原出处。

不使用递归如何求裴波那契数列
分享到:
C语言与MFC随机数组生成
C语言与MFC随机数组生成 C语言/C++产生随机数问题,这里要用到的是rand()函数, srand()函数,C语言/C++里没有自带的random(int number)函数。 先来看下MFC下随机数组的产生,C语言也是用同样的方法: void CNM_MFCDlg::OnBnClickedOk() { CEdit* pBoxOne; pBoxOne = (CEdit*) GetDlgItem(IDC_EDIT1); CSt...
寻找和最大的连续子串
寻找和最大的连续子串 给定一整型数字a[]={a[0],...,a[n])},找出连续子串{a[x]),a[x+1],...,a[y]},使得和最大,其中,0 解决思路: 和最大的子串一定是以数组a中的某一个元素为结束,所以我们分别对每一个元素作为当前子串的结尾计算当前和最大的子串,再对计算出的所有子串和进行比较,最大...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……