如何将Fibonacci数字推入外部数组?

时间:2016-09-13 17:41:56

标签: c++ object namespaces

我不知道在命名空间上声明值与在全局上声明值相同。

所以我想改变我不使用全局变量的代码。

如何在不使用全局变量的情况下跟踪0~20的Fibonacci数?

#include <iostream>
using namespace std;
int Fibonacci(int num);
namespace Fib{
    int arr[100];
    int num;
}
int main(){
    cin >> Fib::num;
    Fibonacci(Fib::num);
    return 0;
}

int Fibonacci(int n){
    if(Fib::num < 1) return -1;
    int result = 0;
    int idx;
    result = (n == 0) ? 0 : (n == 1) ? 1 : Fibonacci(n-1) + Fibonacci(n-2);
    Fib::arr[n] = result;
    if(n == Fib::num){
        for(idx=1; idx < n+1 ; idx++){
            cout << Fib::arr[idx] << " ";
        }
        cout << endl;
    }
    return result;
}

2 个答案:

答案 0 :(得分:1)

此代码的问题不在于命名空间的使用。它是使用全局变量。 使用全局变量的原因无限,可能是一个或两个适当的场景。这里是合适的。

答案 1 :(得分:-1)

命名空间本质上是包。它们可以像这样使用:

 namespace MyNamespace
 {
 class MyClass
 {
 };
}

然后在代码中:

 MyNamespace::MyClass* pClass = new MyNamespace::MyClass();
Hope that helps.

或者,如果您想要始终使用特定的命名空间,则可以执行以下操作:

 using namespace MyNamespace;

 MyClass* pClass = new MyClass();