C++问题,下面的程序运行过程是什么啊?

#include<iostream.h>
int f(int);
int main()
return 0;
{
for(i=0;i<5;i++)
int i;
cout<<f(i)<<" ";
return 0;
}
int f(int i)
{
static int k=1;
for( ;i>0;i--) k+=i;
return k;
}
答案1 2 5 11 21


#include<iostream>
using namespace std;
int f(int);
int main()
{
    int i;
    for (i = 0; i < 5; i++)
    cout << f(i) << " ";
    return 0;
}
int f(int i)
{
    static int k = 1;
    for (; i > 0; i--) k += i;
    return k;
}

注意这里的K是静态的,所以每次输出后K的值不会复原
i:0 k=1+0=1
i:1 k=1+(1+0)=2
i:2 k=2+(2+1+0)=5
i:3 k=5+(3+2+1+0)=11
...