📜  门| GATE CS 2020 |第56章

📅  最后修改于: 2021-06-29 05:51:03             🧑  作者: Mango

考虑以下C函数。

int fun1(int n) {
    static int i= 0;
    if (n > 0) {
       ++i;
      fun1(n-1);
   }
  return (i);
}
int fun2(int n) {
   static int i= 0;
   if (n>0) {
      i = i+ fun1 (n) ;
      fun2(n-1) ;
  }
return (i);
}

fun2(5)的返回值为________。

注–此问题为数值类型。
(A) 55
(B) 45
(C) 50
(D) 52答案: (A)
说明: fun1()由于“静态变量”而添加了其先前的值。
因此,它打印55。

#include  
  
int fun1(int n);
int fun2(int n);
  
int fun1(int n) {
    static int i= 0;
    if (n > 0) {
       ++i;
      fun1(n-1);
   }
  return (i);
}
int fun2(int n) {
   static int i= 0;
   if (n>0) {
      i = i+ fun1 (n) ;
      fun2(n-1) ;
  }
return (i);
}
  
int main() 
 { 
     
  printf("%d", fun2(5)); 
  return 0; 
 } 

代码– https://ide.geeksforgeeks.org/RAcxRv1gaA

选项(A)是正确的。
这个问题的测验