用C ++代码计算Fibonacci数

时间:2011-03-02 01:50:12

标签: c++ arrays function matrix fibonacci

我的问题是: 我有一个矩阵。我需要为该矩阵中的每个条目计算相应的Fibonacci数,并将这些值返回到另一个矩阵中。 我一直得到一个C2109“下标需要数组或指针类型”,我知道它来自哪里,我知道它意味着什么,但我不知道如何

  1. 修复
  2. 让我的代码有效。
  3. 现在,它没有做任何事情。我不确定我是否从我的Fibonacci函数返回任何值,或者在我的main函数中正确调用它。我已经修改了它原来的样子。这是我的新代码:

    const int     row1 = 3;
    const int     col1row2 = 3;
    const int     col2 = 3;
    
    int fibonacci (int [][col2]);
    
    void main()
    {
         int   p[row1][col2],  f [row1][col2];
         int sum; 
         input (a,b); 
    
         cout<<"The Fibonacci Matrix is:   ";
         cout<<fibonacci(p);    
         for ( int  i = 0; i < row1; i++)
         {
              for ( int  j = 0; j < col2; j++)
                  {
                        sum = f[i][j]; 
                        f[i][j] = fibonacci(p);           
                  }
         }
         cout<<endl;
    }
    
    
    int fibonacci (int z[][col2])
    {
         int   fib [100]  =  {0 , 1};
         int sum = 0;
    
         for ( int m = 2; m < 100; m++)
         {
               sum =  fib[m-1] + fib[m-2];
               fib[m] = sum;
         }
         return sum;
         cout<<endl;
    }
    

    感谢任何帮助!

2 个答案:

答案 0 :(得分:4)

我认为问题在于这一行:

f [i][j] = fib [ p [i][j] ];

尝试错误地调用fib函数。你在这里有正确的想法,但要在C ++中调用函数,你需要使用常规括号而不是方括号。我认为这一行看起来像

f [i][j] = fib ( p [i][j] );

作为后续行动,您fib的实施似乎可能不正确。特别是,您接受了与矩阵相对应的两个参数,但您从不直接使用这些值。相反,您正在构建一个包含所有Fibonacci数的新局部数组。您可能希望让此函数返回它生成的相应Fibonacci数。

希望这对您进入C ++的过程有所帮助,祝您好运!

答案 1 :(得分:2)

除了templatetypedef所说的,你只向fib函数提供一个参数,但声明它接受两个参数。此外,fib()不返回值 - 它声明为void。

fib( p [i][j] );

这里也有一个分号丢失

sum = fib[ m - 1]  +  fib[ m - 2]