运行结果出错,但不知道哪里有问题

问题遇到的现象和发生背景

作业题,但是不知道为什么运行结果一直为1

#include <stdio.h>
long sum(int n)
{
int i=1,r=0;
while(i<=n)
{
if(i%3==0)
{
r=r+i;
++i;
return r;
}
return sum(r);
}

}
int main()
{
int x;
long f;
scanf("%d",&x);
f=sum(x);
printf("%ld\n",f);
}

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

这题目是什么?

递归有错