三种方式实现fibonacci数列

来源:互联网 发布:多益网络账号找回 编辑:程序博客网 时间:2024/04/29 12:39

三种方式实现fibonacci数列

  • 递归
  • 非递归
  • 尾递归

尾递归脑中演算运行一下就应该可以理解了。
非递归是根据公式,推导不会,会用就好。

/*    2.递归与分治         Fibonacci数列 */#include <stdio.h>#include <math.h>int fibonacci(int n){    if(n >= 0)    {        if(n == 0)  return 1;        else if(n == 1) return 1;        else        {               return fibonacci(n-1)+fibonacci(n-2);        }       }    else return -1;}   //递归int fibonacci2(int n, int num1, int num2){    if(n >= 0)    {        if(n == 0)  return num1;        else    return fibonacci2(n-1,num2,num1+num2);    }    else return -1; }  //尾递归int fibonacci3(int n) {    int i;    int result;    for(i = 0; i <= n; i++)    {        result = 1/sqrt(5)*(pow(((1+sqrt(5))/2),i+1) - pow(((1-sqrt(5))/2),i+1));     }     return result;  }  //非递归 int main() {    int n;    scanf("%d",&n);    printf("%d\n", fibonacci(n));    printf("%d\n", fibonacci2(n,1,1));    printf("%d\n", fibonacci3(n));    return 0;}
0 0
原创粉丝点击