这个程序执行所得sum值是如何计算的?

img

f(5) 运行后 i 因为是static变量会保存,所以i = 5. f(5) = 1 + 2 + 3 + 4 + 5 = 15;
f(3) 运行时 i = 5,会跳过staic int i = 0这个语句。因为 i > m, i = 5, m = 3,循环不会运行。返回0
所以结果是15
谢谢 @Visual Studio 2022提醒

f(5)=0+1+2+3+4+5
此时i=5(因为i是static变量,所以下一次执行还会保存这个值)
f(3)=0
f(5)+f(3)=15

f(5) = 0 + 1 + 2 + 3 + 4 + 5 = 15
f(3) = 0 + 1 + 2 + 3 = 6
f(5) + f(3) = 21

sum=15。
f(5)=0+1+2+3+4+5=15;
因为i被声明为static变量,f()函数执行完成后i不被释放(即i=6),运行到f(3)时重新进入f()函数,循环条件i<=m不成立。(此时i=6,m=3)。所以s+=i不执行,f(3)=0。所以最终sum=15。