C语言——斐波那契数列

本文针对斐波那契数列提出三个问题:分别是

1、迭代方法求前n个斐波那契数列 

2、递归方法求第n个斐波那契数值 

3、迭代方法求第n个斐波那契数值

目录

1、迭代方法求前n个斐波那契数列

2、递归方法求第n个斐波那契数值 

3、迭代方法求第n个斐波那契数值


1、迭代方法求前n个斐波那契数列

#include <stdio.h>
#include<malloc.h>

int* fbnq_array01(int a){
	int n=a;
	int* arr=(int*)malloc(sizeof(int)*n);
	if(a<=2){
		while(n>0){
			arr[n-1]=1;
			n--;
		}
		return arr;
	}else{
		int b=1,c=1,d,i;
		arr[0]=1;
		arr[1]=1;
		for(i=0;i<a;i++){
			if(i<=1){
				arr[i]=1;
			}else{
				d=b+c;
				b=c;
				c=d;
				arr[i]=c;
			}
		}
		return arr;
	}
}

int main(){
	int input,flag=0;
	int *p;
	printf("需要打印前几位斐波那契数列:\n");
	scanf("%d",&input);
	p=fbnq_array01(input);
	while(flag<input){
		printf("%d ",*(p+flag));
		flag++;
	}
	printf("\n");
	return 0;
}

效果如下图所示:

2、递归方法求第n个斐波那契数值 

#include <stdio.h>
#include<malloc.h>

int fbnq_array02(int a){
	if(a<=2){
		return 1;
	}else{
		return fbnq_array02(a-1)+fbnq_array02(a-2);
	}
}

int main(){
	int input;
	printf("需要打印第几位斐波那契数值:\n");
	scanf("%d",&input);
	printf("%d\n",fbnq_array02(input));
	return 0;
}

效果如下图所示:

3、迭代方法求第n个斐波那契数值

#include <stdio.h>
#include<malloc.h>

int fbnq_array03(int a){
	int b=1,c=1,d;
	if(a<=2){
		return 1;
	}else{
		while(a>2){
		d=b+c;
		b=c;
		c=d;
		a--;
		}
	}
	return d;

}

int main(){
	int input;
	printf("需要打印第几位斐波那契数值:\n");
	scanf("%d",&input);
	printf("%d\n",fbnq_array03(input));
	return 0;
}

效果如下图所示:

  • 16
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
斐波那契数列是一个常见的数列,其定义是从第三项开始,每一项都等于前两项之和。斐波那契数列的前几项依次是0, 1, 1, 2, 3, 5, 8, 13, 21, 34... 在C语言中,我们可以使用循环的方法来实现斐波那契数列。首先,我们需要先开辟一个数组来存储斐波那契数列的值。然后,我们给数组的前两位赋初值为0和1,接下来通过循环计算出剩余的斐波那契数列的值。最后,我们可以通过循环输出数组中的值来得到完整的斐波那契数列。以下是用C语言实现斐波那契数列的代码示例: ```c #include <stdio.h> int main() { int array = 0; // 数组赋初值 array = 1; arrysize = sizeof(array) / sizeof(array = array[i - 1 + array[i - 2]; } for(i = 0; i < arrysize; i++) { // 循环输出斐波那契数列 printf("%d ", array[i]); } return 0; } ``` 从上述代码可以看出,我们使用了循环来计算并输出斐波那契数列的值。通过循环,我们可以避免递归算法中产生的多余计算,提高了效率。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [C语言求Fibonacci斐波那契数列通项问题的解法总结](https://download.csdn.net/download/weixin_38631049/12796835)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [C语言输出斐波那契数列](https://blog.csdn.net/cocoszz/article/details/129629596)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [【C语言斐波那契数列](https://blog.csdn.net/qq_49663134/article/details/126128836)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值