首页 > 学院 > 开发设计 > 正文

三种方式实现fibonacci数列

2019-11-06 08:34:14
字体:
来源:转载
供稿:网友

三种方式实现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;}
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表