gpt4 book ai didi

java - 如何找到斐波那契数列中发生溢出的索引

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:01:47 25 4
gpt4 key购买 nike

我有下面的 C 代码(如果语法不符合 C 语言,请原谅)打印给定索引的斐波那契数。它工作正常。但我这里有两个问题。第一个是,我想知道在什么索引处它可能会溢出(假设 16 位编译器最大值 int 数据类型可以容纳 65535)。第二个是当它溢出时它将打印什么值之后的索引?

我知道我的第一个问题完全取决于值 N,但我想知道是否有一种方法可以预测给定的索引 n ,如果它在我们计算索引 n 处的斐波那契之前溢出

我的最后一个问题是,我们如何确保它不会因给定的用户输入值 n 溢出并打印正确的 Fibonacci 值。

 public static int fib_loop(int n)
{
int[] fib = new int[n];
Scanf("%d",&n);
if(n==0)
fib[0] = 0;
if(n==1)
fib[1] = 1;
for (int i = 2; i < n; i++)
fib[i] = fib[i - 1] + fib[i - 2];

return fib[n-1]; //because we only want to return for index 4 in case if n =4 :-)
}

最佳答案

如果您使用unsigned 变量,则溢出是明确定义的。给定 fib(n-1) 和 fib(n-2) 没有溢出,如果 fib(n) 小于 fib(n-1) 则溢出。

unsigned fib[n];
...
fib[i] = fib[i-1] + fib[i-2];
if (fib[i] < fib[i-1]) {
; // handle overflow
}

关于java - 如何找到斐波那契数列中发生溢出的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18675920/

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