求将一个数每一位的数字和
对于这个题,我们还是需要运用递归的方式来进行
思路:
1.当这个数小于10的时候,我们就不需要在进行递归,直接输出就行,
2.故我们需要在这个地方用一个if语句进行筛选,
3.在大于9的情况下再进行递归.并且再次进行循环的时候要/10,这样就能自动切换到下一位.
如下面例题:
int DigitSum(int n){ //自定义函数
if (n > 9)
return DigitSum(n / 10) + n % 10; //进行递归并将原来数除10使它的余数缩小到下一位
else return n; //当到达最高位则输出
}
int main(){
int i = 0;
printf("please enter a number:\n");
scanf("%d",&i);
int ret=DigitSum(i); //调用函数
printf("This number is %d\n",ret);
system("pause");
return 0;
}
对于这个题目,我们主要要能联想到将一个值缩小十倍的话,与10计算它的余数,得到的数就是我们想要的这个数位上的数字.多看看代码,理解理解思路即可!