【问题标题】:Fibonacci series using arrays (as long as user input)使用数组的斐波那契数列(只要用户输入)
【发布时间】:2016-01-21 01:38:06
【问题描述】:

我目前是编程学习的初学者,我的教授指示我按照以下说明进行程序。但是,当我编写程序时,我做了以下操作以获取用户关于数组应该多长时间的输入,但是因为我的数组大小没有定义,它给了我一个错误,但是教授没有指示我指定一个大小,所以我真的很困惑:S

我的尝试:

void displayarray(int n){

int i;
int aray[]={0,1};

for (i=0;i<n;i++){
    printf("%i", aray[i]);
}
printf("\n");

}

int main() { int n;

scanf("%i",&n);

displayarray(n);

getchar();
getchar();

}

分配的任务:

斐波那契数是著名的数字序列。它们以 0 和 1 开头,然后序列中的下一个值是前两个值的和。

0 1 1 2 3 5 8 13 21 34 55 89 144 233 377 610 987 1597 2584 4181 6765 (fib[8] 是 21 -- 记得从 0 开始计数!)

编写一个计算斐波那契数列的程序。

-制作一个接受n的函数,n是要生成的整数个数。

-声明一个数组,只用前两个斐波那契数初始化它,然后计算其余的。

-显示 n=10 和 n=20 的序列。

-尝试为 n=50 生成输出。如果此步骤中出现任何问题,您无需修复它。只需添加一条评论,解释发生了什么以及原因。

【问题讨论】:

标签: arrays function for-loop


【解决方案1】:

您可以仅使用 3 长度的数组来计算所有斐波那契数列。用斐波那契数列的前两个数(0 和 1)初始化数组的前两个元素,然后用这两个值计算数列的第三个数。

 int f[3];

 f[0] = 0;
 f[1] = 1;
 f[2] = f[0] + f[1]

试着弄清楚在 for 循环中要做什么来计算任何整数 n 的斐波那契数。

【讨论】:

  • 问题是我不希望它是一个 3 位数的序列,我希望它像 'n' 一样大,可以被用户扫描
  • 如果我理解正确,你应该这样做:你有 f[0] 和 f[1],用这个计算 f[2] 并打印结果,将值存储在变量或其他。现在您有了 f[1] 和 f[2] 的值,因此您可以计算斐波那契数列的下一个数字并再次打印结果。根据需要重复该过程多次。您必须遍历 for 循环 n - 2 次(-2 是因为您已经知道序列的前两个数字)。
【解决方案2】:

您可以使用“malloc()”或“calloc()”函数来分配给定大小的数组。

你需要像这样声明它

int *array;
array = malloc(n, sizeof(int));

// do something
free(array)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-04-02
    • 1970-01-01
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多