C 调用函数计算多少次İ;北卡罗来纳州

C 调用函数计算多少次İ;北卡罗来纳州,c,function,C,Function,我有一个问题。 我想用斐波那契写一个程序,但我有个问题 每次从主函数调用该函数时,它都应该打印出它被调用的次数 我尝试添加计数器,但每次计数器都是1。Thx您应该使用静态变量,或者您可以为每个调用传递count变量。下面的一个用于静态变量情况 #include<stdio.h> int fib(int n) { static int count = 0; count++; printf("%d", count); if (n <= 1) r

我有一个问题。 我想用斐波那契写一个程序,但我有个问题


每次从主函数调用该函数时,它都应该打印出它被调用的次数


我尝试添加计数器,但每次计数器都是1。Thx

您应该使用静态变量,或者您可以为每个调用传递count变量。下面的一个用于静态变量情况

#include<stdio.h> 
int fib(int n) 
{ static int count = 0; 
  count++; 
  printf("%d", count); 
   if (n <= 1) 
      return n; 
   return fib(n-1) + fib(n-2); 
} 

int main () 
{ 
  int n = 9; 
  printf("%d", fib(n)); 
  getchar(); 
  return 0; 
} 
#包括
整数fib(整数n)
{静态整数计数=0;
计数++;
printf(“%d”,计数);

如果(n您最初尝试添加计数器时,计数器总是1,这说明您是一名初学者。您需要掌握的一个非常重要的概念是“范围”。当您在函数中创建局部变量时,每次调用函数时,都会从堆栈中分配该变量,并将其视为“范围内”在函数返回之前的一段时间内。从函数返回时,为变量分配的内存将被释放,不再被视为“在范围内”。无需特别告诉编译器希望变量挂起(使用
static
关键字),您不能保证获得相同的内存块,即使您确实获得了相同的内存块,也很可能是其他函数使用了它并破坏了其中的任何值


因此,为了具体回答您的问题,您应该在计数器的变量声明中使用
static
关键字,例如
static int counter=0;
初始值为0。

您确实应该向我们展示您正在使用的代码。但是,您可能需要将“count”变量
设置为static
-然后是值将在函数调用中保持。共享您的代码,我们可能会提供帮助。让我们查看您的代码:-)。全局变量可能会有帮助或
静态
“每次从主函数调用函数时”幸运的是,我们在C中而不是C++,否则你想让我们解决这个问题的限制不是很容易,你没有给我们显示什么。是的,我想给斐波那契,但是这个程序输出是:12345、67、1112、1316、1619、192、202、122、23、252、262、29、29、303、133、336、353、3639、39、404、1424、445、464、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4、4606162636465666768697071727374757677787980818283848586878889909192939495969797989910010110210310410510610810934'不仅仅是一个值