小标
2018-11-01
来源 :
阅读 2710
评论 0
摘要:本文主要向大家介绍了C/C++知识点之用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
本文主要向大家介绍了C/C++知识点之用递归和非递归的方法输出斐波那契数列的第n个元素(C语言实现),通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。
费波那契数列(意大利语:Successione di Fibonacci),又译为费波拿契数、斐波那契数列、费氏数列、黄金分割数列。
在数学上,费波那契数列是以递归的方法来定义:
{\displaystyle F_{0}=0}
{\displaystyle F_{1}=1}
{\displaystyle F_{n}=F_{n-1}+F_{n-2}}(n≧2)
用文字来说,就是费波那契数列由0和1开始,之后的费波那契系数就是由之前的两数相加而得出。首几个费波那契系数是:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233……(OEIS中的数列A000045)
特别指出:0不是第一项,而是第零项。
1 #include <stdio.h>
2
3 int fib1 (int n) ; //非递归生成下标为n的斐波那契数列元素
4 int fib2 (int n) ; //递归生成下标为n的斐波那契数列元素
5
6 int main ()
7 {
8 int n ;
9 printf ("please input the index of fib:") ;
10 scanf ("%d" , &n) ;
11 printf ("the %d fib1 number is %d \n" , n , fib1(n)) ;
12 printf ("the %d fib2 number is %d \n" , n , fib2(n)) ;
13 return 0 ;
14 }
15
16 int fib1 (int n)
17 {
18 int i = 0 ;
19 int a = 1 ;
20 int b = 1 ;
21 int result = 0 ;
22 if (n <= 0)
23 {
24 return 0 ;
25 }
26 else if (n <= 2)
27 {
28 return 1 ;
29 }
30 else
31 {
32 for (i = 3 ; i <= n ; i ++)
33 {
34 result = a + b ;
35 a = b ;
36 b = result ;
37 }
38 return result ;
39 }
40 }
41
42 int fib2 (int n)
43 {
44 if (n <= 0)
45 {
46 return 0 ;
47 }
48 else if (n <= 2)
49 {
50 return 1 ; //递归终止条件
51 }
52 else
53 {
54 return fib2(n-1) + fib2(n-2) ; //递归
55 }
56 }
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标编程语言C/C+频道!
喜欢 | 0
不喜欢 | 0
您输入的评论内容中包含违禁敏感词
我知道了

请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式AI+学习就业服务平台 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号