gpt4 book ai didi

c - 斐波那契数列和 c 的问题

转载 作者:太空宇宙 更新时间:2023-11-04 08:50:27 27 4
gpt4 key购买 nike

#include <stdio.h>
#include <math.h>

int fib();
int scan;

int main() {
scanf("%d", &scan);

printf("%d\n", fib());


scanf("%s");
return 0;
}

int fib() {
return floor((pow(1+sqrt(5)/2, scan)-(-pow(1-sqrt(5)/2, scan)))/sqrt(5));
}

我对使用 C 进行编程还很陌生,因此决定尝试计算斐波那契数列中的任何数字。我基于我的 lua 脚本 here .我不知道自己做错了什么,有人可以给我一些见解吗?

最佳答案

你的公式错了。你希望 fib 是:

int fib() {
return round((pow((1+sqrt(5))/2, scan)-(-pow((1-sqrt(5))/2, scan)))/sqrt(5));
}

相反。您在 1+sqrt(5)1-sqrt(5) 术语周围缺少括号,并且使用 floor 而不是 round,这低估了我的斐波那契数测试。 (这主要与 pow 函数的精度低有关。第七个斐波那契数 13 结果为 12.969)

你可能还想改变

scanf("%s");

char tmp;
scanf("%c", &tmp);

由于您的方式错误地省略了参数。

希望这对您有所帮助!

关于c - 斐波那契数列和 c 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19850350/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com