c语言斐波那契迭代,C语言实现斐波那契数列的两种方法(递归和迭代)

本文介绍了如何使用C语言通过递归和迭代的方式实现斐波那契数列,并对比了它们的运行效率。展示了两段代码实例,分别是递归版的 fibonacci_recursive 和迭代版的 fibonacci_iteration,适合初学者理解算法原理和优化技巧。
摘要由CSDN通过智能技术生成

两种方法实现斐波那契数列,递归实现起来稍简单些,思路也清晰些,但运行效率显然不如迭代

下面是编译通过的两种方式实现斐波那契数列的C语言代码:

/*

* fibanacci.c

*

* Created on: 2015-3-16

* Author: floydz

*/

#include

/*

* 关于long long的定义: 在C语言的C99标准扩展了新的整数类型 long long,long是32位宽,

* 占4个字节,long long通常被定义成 64 位宽,也就可以实现了在32位机器上可以扩展8字节的数据

*

* I64d是对应的long long类型的printf打印标识符

*/

/*

* fibonacci_resursive 使用递归的方法实现

*/

long long fibonacci_recursive(int n) {

if (n <= 0)

return 0;

if (n == 1)

return 1;

return fibonacci_recursive(n - 2) + fibonacci_recursive(n - 1);

}

/*

* fibonacci_iteration使用迭代的方法实现

*/

long long fibonacci_iteration(int n) {

int result[2] = { 0, 1 };

int i = 2;

long long num = 0;

if(n < 2) {

return result[n];

}

long long fib_minusone = 1;

long long fib_minustwo = 0;

for(;i <=n;i++) {

num = fib_minusone + fib_minustwo;

fib_minustwo = fib_minusone;

fib_minusone = num;

}

return num;

}

int main() {

int input;

long long result1, result2;

printf("请输入数字n:\n");

fflush(stdout);//刷新标准输出

scanf("%d", &input);

printf("你输入的数字是:%d\n", input);

fflush(stdout);

result1 = fibonacci_recursive(input);

result2 = fibonacci_iteration(input);

printf("计算所得的Fibonacci_recursive(%d)值为%I64d:\n", input, result1);

fflush(stdout);

printf("计算所得的Fibonacci_iteration(%d)值为%I64d:\n", input, result2);

fflush(stdout);

return 1;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值