1.局部变量,在被调用函数中改变局部变量的值,不影响主函数,即:虽然在局部变量中重新进行赋值,但是在主函数中,局部变量的值仍不变。
解决办法:1.定义为全局变量,
2.用指针,通过地址改变值。
2.printf(),在printf()中输出参数的计算的先后顺序未定义,不是在前面的就先计算,后面的后计算。
解决办法:用多个printf().如:
#include<stdio.h>
int Fibonacci(int n);
int count;
int main()
{
int n,ret;
printf("please input n:\n");
ret = scanf("%d",&n);
if(ret!=1||n<0)
{
printf("input error!\n");
return -1;
} printf("Fibonacci:%d,count:%d\n",Fibonacci(n),count);
//在函数Fibonacci(n)中改变了count的值,但是总是输出为0,原因:printf()中先求前面还是先求后面的参数是未定义的,即在计算之前,就输出了count的值(自动初始化为0)
printf("count:%d",count);//正确结果
return 0;
}
int Fibonacci(int n)
{
count++;
if(n==0)
{
return 0;
}
else if(n==1)
{
return 1;
}
else if(n<0)
{
printf("n should > 0");
return -1;
}
else
{
return (Fibonacci(n-1)+Fibonacci(n-2));
}
}