我正在尝试编写一个程序,让用户可以生成1-75个Fibonacci数字,打印它们,然后将所有这些值一起添加到所有总和中。我没有问题生成数字和打印它们,但由于某种原因,我有一个很多和sum函数更麻烦。出于某种原因,它只返回0 ......并且在我盯着它看了几个小时后,我感到很茫然。任何和所有的帮助将不胜感激。我的代码如下:
#include <stdio.h>
#include <stdlib.h>
//function to calculate fibonacci number 1-75 (user specified)
int fibonacci(int * array, int size)
{
int i;
unsigned long long int Fibonacci[size]; //generating the array to save the Fibonacci values
Fibonacci[0] = 0; //by definition
Fibonacci[1] = 1; //by definition
for (i = 2; i < size; i++) {
Fibonacci[i] = Fibonacci[i-2] + Fibonacci[i-1]; //equation to calculate the numbers
}
for (i = 0; i < size; i++) {
printf("%llu\t", Fibonacci[i]); //printing out the numbers
}
printf("\n");
return size;
}
int fibonacciSum(int * array, int size)
{
int i;
int sum = 0;
for (i = 0; i < size; i++) {
sum += array[i];
}
return sum;
}
int main(void)
{
int size;
printf("How many Fibonacci numbers do you want to generate (between 1 and 75)?\n");
scanf("%i", &size);
int * FibonacciNumbers = (int*) calloc(size,sizeof(int));
if (size < 1 || size > 75) {
printf("Bad number!");
return 1;
}
fibonacci(FibonacciNumbers, size);
printf("The sum of the Fibonacci numbers is: %d\n", fibonacciSum(FibonacciNumbers, size));
return 0;
}
答案 0 :(得分:6)
如果您将函数fibonacci
重写为
int fibonacci(int * array, int size)
{
int i;
array[0] = 0;
array[1] = 1;
for (i = 2; i < size; i++) {
array[i] = array[i-2] + array[i-1]; //equation to calculate the numbers
}
for (i = 0; i < size; i++) {
printf("%d\t", array[i]); //printing out the numbers
}
printf("\n");
return size;
}
因为Fibonacci
数组上的作业不会影响存储在main中的array
并在其他函数中使用。
答案 1 :(得分:2)
Fibbonacci
数组只能在函数中访问。您需要将数字存储在另一个数组中。
答案 2 :(得分:0)
忘了分配?只是不确定为什么第一个返回任何东西。
size = fibonacci(FibonacciNumbers, size);
你在函数中混合了参数名称。