我不知道在命名空间上声明值与在全局上声明值相同。
所以我想改变我不使用全局变量的代码。
如何在不使用全局变量的情况下跟踪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;
}
答案 0 :(得分:1)
此代码的问题不在于命名空间的使用。它是使用全局变量。 不使用全局变量的原因无限,可能是一个或两个适当的场景。这里不是合适的。
答案 1 :(得分:-1)
命名空间本质上是包。它们可以像这样使用:
namespace MyNamespace
{
class MyClass
{
};
}
然后在代码中:
MyNamespace::MyClass* pClass = new MyNamespace::MyClass();
Hope that helps.
或者,如果您想要始终使用特定的命名空间,则可以执行以下操作:
using namespace MyNamespace;
MyClass* pClass = new MyClass();