答案为什么选3,过程是什么样子的

img

for(int i=1;i<3;i++)
j+=f(i);
这个循环从1到2,执行两次,第一次调用f,参数是1,f里面当参数是1,返回1,调用结束后j=1;.
第二次参数是2,执行f(2) 直接进入了else后面的语句 return f(n-1)+1; 就是return f(1)+1; f(1) 返回1 ,就是返回2
j+=2;结果就是3

当i为1时调用函数f(n) j=1
i=2时调用函数f(2-1)+1
f(1)也等于1
j=f(1)+f(2-1)+1
等于3

f函数的递归 终止条件是n==1 递归输入的值是n-1 但是返回时又+1 所以f函数输入什么值 就返回什么值
再说j j+=f(i) 意思就是j=(j+f(1))+f(2)就等于3
所以输出3