请问下面函数为什么提示错误:使用了未初始化的局部变量“c”
#include "stdafx.h"
#include
using namespace std;
int fib(int n);
int main()
{
int k = fib(10);
cout << "k=:" << k;
return 0;
}
int fib(int n) {
int c;
if (n ==1||c == 2 )
c = 1;
if (n > 2)
c = fib(n - 1) + fib(n - 2);
else
0;
return c;
}
int c;
if (n ==1||c == 2 )
没有初始化就用了 c
新的c++编译器,会更加严格地检查你的程序(可以防止你疏忽造成错误)
int c;
这里没有初始化,可以用
int c = 0;
早期的编译器,这么写不会报错。
返回值是拷贝值,局部变量的作用域为函数内部,函数执行结束,栈上的局部变量会销毁,内存释放。
int c定义时没有初始化,就直接判断了,所以会报错.
改函数第二行如下:
int fib(int n) {
int c = 0;
if (n ==1||c == 2 )
c = 1;
if (n > 2)
c = fib(n - 1) + fib(n - 2);
else
0;
return c;
}