正如你所说的i表示n的位数,这里的位数=7,而由递归的思路,我们可以看到,第一个被执行的是最高位“7”,这个时候,i=7,j=1,对于((i-j+1)%3==0&&j!=1)这条语句可以看出(7-1+1)%3==0不成立,则程序跳过printf(","); 执行printf("%d",7%10);也即输出“7”,完成这个循环后,程序跳出第一个递归,执行n=6时,这个时候,i=7,j=2,(7-2+1)%3==0成立,且j!=1,所以,程序执行printf(",");也即输出“,”,然后执行printf("%d",6%10);也即输出“6”,逐次递归返回到n=1时,程序完成,事实上,对于if((i-j+1)%3==0&&j!=1)这个判断,可以去掉&&j!=1,结果仍然正常 |