求这个程序的过程和答案

#include <stdio.h>
int myadd(int i){
if(i==1)
return 1;
else
return myadd(i-1)
}
void main(){
int i=5,s=0;
while(i>0){
s+=myadd(i);
i-=2;
}
printf("s=%d",s);
}

各位大佬,求过程和答案,感谢🙏

int i=5,s=0;
while(i>0){
s+=myadd(i);
i-=2;//i减三次可变成负数,所以while循环可执行三次
}
第一次while循环myadd传入的i为5,递归式myadd中没做任何递归操作,所以无论传入的i是几,输出任是1
第二次传入i为3,输出1
第三次传入i为1,输出1
所以三次执行后s为3

s=3 myadd看似递归 实际只要传大于等于1的都会返回1 其他死循环。 i 的初始值为5 递减为2 那就是可以循环3次 也就是累加3个1 所以s=3

i 的初始值是5,s的初始值是0;
进入while循环,条件判断 i>0 5>0 满足条件
调用myadd 传入i,myadd是一个递归方法,当i不等于1时,始终进行递归,直至等于1为止;
第一次循环:s+=myadd(i) s=s+myadd(5) s=0+1 s=1; i-=2 i=i-2 i=5-2 i=3;
第二次循环:s+=myadd(i) s=s+myadd(3) s=1+1 s=2; i-=2 i=i-2 i=3-2 i=1;
第三次循环:s+=myadd(i) s=s+myadd(1) s=2+1 s=3; i-=2 i=i-2 i=1-2 i=-1;
循环不满足条件,循环结束
控制台输出s=3;