demo11:斐波那契数列+黄金分割

3.熟悉的斐波那契数列(1 1 2 3 5 8...)+黄金分割(0.618)

(1)斐波那契数列(也被叫做生兔子问题,感兴趣可以去搜了解了解)

分析规律:除前两个数字外,其余数字都等于前两个数字之和:f(n)=f(n-1)+f(n-2)

a.代码如下:(使用数组解决)

#include<stdio.h>
int main(){
	int n=0,i=2;
	printf("请输入要打印多少个数:\n");
	scanf("%d",&n);
	int arr[n]={1,1};
	printf("%d  %d",arr[0],arr[1]);
	for(i=2;i<n;i++){
		arr[i]=arr[i-1]+arr[i-2];
		printf("%3d ",arr[i]);
	}
	return 0;
}

a.运行结果如下:

 b.代码如下:(不使用数组)

#include<stdio.h>
int main(){
	int a=1,b=1,i=3,n=0;
	printf("请输入要打印多少个数:\n");
	scanf("%d",&n);
	printf("%d  %d",a,b);
	for(i=3;i<=n;i++){ //切记已经打印完两个数,此时的i应该从3开始循环! 
		int c=a+b;
		printf("%5d",c);
		a=b;
		b=c;
	}
	return 0;
}

b.运行结果如下:

 (2)扩展:黄金分割比(本质上还是斐波那契数列)

代码如下:

//黄金分割比
#include<stdio.h>
#define N 30
int main(){
	int i=2;
	double arr[N]={1,1}; //涉及比值,要用double型!!!
	for(i=2;i<N;i++){
		arr[i]=arr[i-1]+arr[i-2];
	}
	for(i=3;i<N;i++){
		printf("%lf\n",arr[i-1]/arr[i]); //从第四个数开始前一个数除后一个数的比值,越往后越能体现黄金分割
	}
	return 0;
}

 ps:希望大家养成好习惯 使用宏常量定义数组大小(会非常方便修改数组大小!)

 代码实现如下:

 多敲代码会变聪明,大家一起加油!!😆

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值