C语言希望高手能将清楚最好注明代码的意思

来源:百度知道 编辑:UC知道 时间:2024/05/26 03:02:33
 编写递归函数,求满足以下条件的最大的n:
1^2+2^2+3^2+…..+n^2<1000
能不能每一步都注释一下谢谢了

//---------------------------------------------------------------------------

#include <stdio.h>
int pdf(int n)
{
static int s=1;
s+=n*n;
if (s>=1000) return n-1;
else pdf(n+1);
}
int main(void)
{
printf("%d",pdf(2));/*调用递归函数并输出满足条件的最大值*/
return 0;
}
//---------------------------------------------------------------------------

#include <stdio.h>
int sum=0;
m(int x)
{
if((sum+=x*x)<1000) //sum是
m(x+1);
else
printf("%d\n", x--);
}

main()
{
m(1);
}
第一次进入函数m()时,x=1,sum=0+1*1,
sum<1000,执行m(++x),
第二次进入m(),x=2
sum=1+2*2
sum<1000,再执行m(++x)
第三次进入m(),x=3
.........
最终打印结果是13,
因为行13的时候还是sum<1000,还要再执行一次m(++x),这次进入m()的时候sum>1000,所以输出--x