求助递归调用问题?
从键盘输入一个数,例如输入的数是5684,用递归调用实现:5+6+8+4=23(数是随便输入,格式按前面的格打印出)
#include <stdio.h>
#define MAX 100
void fun(char *str)
{
int tmp;
static int sum = 0;
if (!(*str))
{
printf("=%d\n", sum);
return;
}else if (sum)
{
printf("+");
}
tmp = *str - '0';
printf("%c", *str);
sum += tmp;
fun(++str);
}
int main(void)
{
char str[MAX];
scanf("%s", str);
fun(str);
return 0;
}
这里有字符个数限定,有可能会有溢出,如果想不限可以用realloc来动态生成数组,函数fun里没有写判断字符是否为'0'~'9',默认输入的都是正确的
希望对楼主有帮助~