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:希望大家养成好习惯 使用宏常量定义数组大小(会非常方便修改数组大小!)
代码实现如下:
多敲代码会变聪明,大家一起加油!!😆