在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10

在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10,第1张

#include <stdioh>

typedef unsigned long long int uint64;

typedef unsigned int uint32;

int main(void)

{

uint64 limit=((uint64)634<<(sizeof(uint64)8-10)); //634=06191406251024 由于0618转换成2进制比较难,所以用这个接近0618的数

uint64 pre=0;

uint64 cur=1;

uint64 next=0;

uint64 cnt=1;

while(cur<=limit) //利用Fibonacci数列的特性,即F(n-1)/F(n)=0618。

{

next=cur+pre;

pre=cur;

cur=next;

cnt++;

if(cnt%10==0)

printf("F%llu=%llu\n",cnt,cur);

}

printf("%llu %llu\n",pre,cur);

return 0;

}

32位的自己改吧。把uint64改为uint32就可以了。

private void prove()

{

double pre = 1;//前一项

double back = 1;//后一项

double current = 1;//当前新值

double ratio = 00;//比例

for (double i = 1; i < 100; i++)

{

current = pre + back;

ratio = back / current;

pre = back;

back = current;

}

}

我也在学这个课,老兄。我编的这个用于解决二次的问题。输入目标函数系数和初始区间及熟练精度。 黄金分割法:

# include <stdioh>

# include <mathh>

float d,e,f;

void main ()

{printf("请输入目标函数的二次项,一次项,常数项,中间用空格分开\n");

scanf("%f %f %f",&d,&e,&f);

float fox (float x);

float a0,b0,z,a,b,x1,x2,f1,f2,xx;

char k,m;

int n;

printf("请输入初始区间a0,b0,收敛精度z,中间用空格分开\n");

scanf("%f %f %f",&a,&b,&z);

a=a0;

b=b0;

x1=a+0382(b-a);

f1=fox(x1);

x2=a+0618(b-a);

f2=fox(x2);

if(f1<f2) {n=0;

b=x2;

x2=x1;

f2=f1;

}

else {n=1;

a=x1;

x1=x2;

f1=f2;

}

while(fabs((b-a))>z)

{if(n==0) {x1=a+0382(b-a);

f1=fox(x1);

}

else {x2=a+0618(b-a);

f2=fox(x2);

}

}

if(f1<f2) {n=0;

b=x2;

x2=x1;

f2=f1;

}

else {n=1;

a=x1;

x1=x2;

f1=f2;

}

xx=(a+b)/2;

printf("极小点和极小值xx=%f,ff=%f\n",xx,fox(xx));

k=getchar();

m=getchar();

}

float fox(float x)

{float r;

r=dxx+ex+f;

return(r);

}

#include<iostreamh>

#include<mathh>

/黄金分割法求最小值的C++程序,部分变量及函数书写并不规范/

//δ为题给精度

int n = (lnδ/ln0618 + 1) + 1;

int i;

float f(float ai, float bi)

{

a(i + 1) = ai + 0618(bi - ai);

return ai + 1;

}

float g(float ai, float bi)

{

b(i + 1) = ai + 0382(bi - ai);

return b(i + 1);

}

float F(float ai, float bi)

{

//题给的f(x)函数式;

return ;

}

float A(float ai, float bi)

{

int i = 1;

float result;

L: do

{

a(i + 1) = f(float ai, float bi);

b(i + 1) = g(float ai, float bi);

float F1 = F(float ai, float bi);

float F2 = F(float a(i + 1), float b(i + 1));

ai = ai, bi = b(i + 1);

i ++;

}while(i <= n && F1 >= F2)

if(i < n)

{

B(float ai, float bi);

}

else

result = F2;

return result;

}

float B(float ai, float bi)

{

do

{

a(i + 1) = f(float ai, float bi);

b(i + 1) = g(float ai, float bi);

float F1 = F(float ai, float bi);

float F2 = F(float a(i + 1), float b(i + 1));

ai = a(i + 1), bi = bi;

i ++;

}while(i <= n && F1 <= F2)

if(i < n)

{

goto L;

}

else

result = F1;

return result;

}

void main()

{

int i = 1;

float A(float ai, float bi);

cout<<"最小值为:"<<result<<endl;

}

#include <stdioh>

#include <mathh>

float GetEquation(float x)

{

return xx-7x+10;

}

void main()

{

float a=0;

float b=6;

float result = 0;

do {

float c=a+0618(b-a);

float d=a+b-c;

if(fabs(GetEquation(c)) < fabs(GetEquation(d)))

{

a=d;

result = c;

}

else

{

b=c;

result = d;

}

} while(fabs(GetEquation(result)) > 001);

printf("f(a)=aa-7a+10\n");

printf("a=%f\n",result);

}

以上就是关于在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10全部的内容,包括:在目前的计算机系统里用整数运算能得到的最大Fibonacci数是多大 用C语言写一个完整的程序计算,并每隔10、C#编写程序 证明斐波那契数列的数列前后项的比值无限接近0.618、C语言编程等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zz/10634705.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-10
下一篇 2023-05-10

发表评论

登录后才能评论

评论列表(0条)

保存