#include <stdio.h>
void printDigit(int n)
{
int d;
int temp;
int temp2;
if (n == 0) {
return;
}
d = n % 10;
printf("%d ", d);
printDigit(n / 10);
}
int main()
{
int n = 755545;
printDigit(n);
return 0;
}
所以我需要从右向左减去每一个数字,例如5-4= 1,4 -5=-1,然后打印成xxxx -1 1。我尝试了一些东西,比如在那里获得一个临时int,但我需要它改变每个递归。
编辑:对于输入数字755545,输出应为-2 0 0 -1 1。
不需要临时变量来存储前一位数字。表达式(n / 10) % 10
会给出前面的数字。if(n / 10 == 0)
确保递归提前一个深度结束,使得表达式(n / 10) % 10
始终有效。
#include <stdio.h>
void print_digit(int n)
{
if(n / 10 == 0) return;
print_digit(n / 10);
printf("%d ", (n % 10) - (n / 10 % 10));
}
int main()
{
int n = 755545;
print_digit(n);
return 0;
}
以数字755545
为例,传递值75
时遇到退出语句。下面是流程:
755545
|- 75554
|- 7555
|- 755
|- 75
print (75 % 10) - (75 / 10 % 10) = 5 - 7 = -2
|- print (755 % 10) - (755 / 10 % 10) = 5 - 5 = 0
|- print ( 7555 % 10) - (7555 / 10 % 10) = 5 - 5 = 0
|- print (75554 % 10) - (75554 / 10 % 10) = 4 - 5 = -1
print (755545 % 10) - (755545 / 10 % 10) = 5 - 4 = 1
下面是完整的函数
int subDigits(int number){
if(number>0){
int temp = number;
temp = temp / 10;
digits(number/10);
if(temp>0) {
cout << number % 10 - temp % 10 << " ";
}
}
}
int main() {
subDigits(1562);
return 0;
}