首页 > 试题广场 >

如下函数的f(1)的值为?

[单选题]
如下函数的f(1)的值为()
int f(int n){ 
    static int i = 1;
     if(n >= 5)
         return n;
     n = n + i;
     i++;
     return f(n);
}
  • 5
  • 6
  • 7
  • 8
静态变量只会初始化一次
发表于 2018-04-09 15:36:11 回复(0)
更多回答
推荐
该函数为递归调用。

f(1):n=2;i=2;调用f(2)
f(2):n=4;i=3;调用f(4)
f(4):n=7;i=4;调用f(7)
f(7):返回7
即最终函数返回结果为7

选C

编辑于 2015-01-31 11:42:29 回复(3)
静态变量只会被初始化一次
发表于 2015-07-10 11:03:44 回复(4)
static 是保证变量长期有效,但是只会初始化一次,所以每次i是一直增加的,并不是不变的
发表于 2017-08-22 16:18:37 回复(0)
初始态:n=1,i=1
f(1)后:n=2,i=2
f(2)后:n=4,i=3
f(4)后:n=7,i=4
因此等于7
发表于 2015-07-06 17:26:13 回复(1)
int f(int n)
{
static int i = 1;
n += i;
i++;
if (n >= 5)
return n;
return n+ f(n);
}
上次今日头条笔试第一题 应该是13,和这里有点区别
发表于 2015-09-18 17:28:37 回复(3)
静态常量只能初始化一次,可以多次赋值
发表于 2018-06-12 16:09:21 回复(0)

这题目就是为了检查一下咱静态变量和递归结构掌握程度的,慢慢来应该问题不大。要计算f(1),需要讲参数1传入函数后的返回值,参数更新后n=2,i=2,返回f(2);要f(2)和f(1)计算一样,需要计算返回值,显然,返回f(4);f(4)传入后n=7,满足输出常数条件,所以f(4)=7。综述:f(1)=f(2)=f(4)=7

发表于 2018-07-24 17:10:13 回复(0)
i为静态变量,只初始化一次,i是累加的
发表于 2017-09-05 19:54:36 回复(0)
答案:C
变量i是static类型的,所以每次i++有效,会累加。
f(1)会返回f(1+1)
f(2)会返回f(2+2)
f(4)会返回f(4+3)
f(7)会返回7
发表于 2015-01-28 16:45:08 回复(0)
static变量只初始化一次
发表于 2023-10-30 16:49:20 回复(0)
如果把static 去掉,就选A 
发表于 2018-04-26 09:16:49 回复(0)
静态变量只会初始化一次,存放在静态变量区
编辑于 2024-03-05 23:11:15 回复(0)
变量i由static修饰,静态变量只会初始化一次,故i++的值在函数体内递增,选C;如果int i = 1那么就选A(每次调用i都为1)。
发表于 2023-10-06 10:11:37 回复(0)
静态变量只会被初始化一次
发表于 2023-09-16 18:54:26 回复(0)
1+1+2+3=7
发表于 2022-11-16 13:36:33 回复(0)
 static 静态变量,保存上一次的结果
发表于 2022-07-28 16:47:15 回复(0)
不保护好吧
发表于 2020-06-22 22:32:44 回复(0)
函数中的静态常量只会被初始化一次
发表于 2017-08-23 13:47:21 回复(0)
函数中有static表示变量在函数调用结束后,其值并不会被释放
发表于 2017-07-05 21:30:52 回复(0)
答案C
注意静态变量 i,初始化一次,之后会随着递归增加
发表于 2017-07-04 21:59:21 回复(0)