我是 C 新手,但做了一些练习,所以这个练习如下
要求:
问题:
需要帮助我能做什么?
代码:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
unsigned Fibonacci(unsigned numElement);
int main()
{
unsigned element;
element = Fibonacci(89);
printf("%d\n",element);
return 0;
}
unsigned Fibonacci(unsigned numElement){
int fibonacciArr[100] = {0, 1};
int i;
for(i = 2; i < numElement; i++ ){
fibonacciArr[i] = fibonacciArr[i-1] + fibonacciArr[i-2];
}
return fibonacciArr[numElement -1];
}
获取输出:-2092787285(我知道超出了无符号整数的范围,所以是负数,但不知道如何解决这个问题) 而不是预期的输出:1100087778366100000
-尝试使用“unsinged long long”但不符合运动要求
这些要求正如你所理解的那样是根本不可能的,因为正如你所说,正确的结果对于 32 位无符号整数来说太大了。
有两种方法可以解释给您的任务: