Онлайн компилятор C

#include <stdio.h> void print_digits_reverse(int n){ if n < 10 { return n; } printf ("%d",n); return print_digits_reverse(n - 1); } int main() { printf("%d", print_digits_reverse(25)); return 0; }
这段代码试图用递归方式逆序打印数字的各位,但存在几个问题。

函数 `print_digits_reverse` 的返回类型是 `void`,但代码中却使用了 `return n` 和 `return print_digits_reverse(n - 1)`,这会导致编译错误。另外,递归逻辑也不正确,它没有提取数字的个位,而是直接打印整个数字并递减。

- 检查函数返回类型:`void` 函数不能返回任何值,包括 `return n`。你需要决定这个函数是打印数字还是返回数字。
- 递归思路:要逆序打印数字的各位,通常先处理最后一位(用 `n % 10`),然后递归处理剩余部分(用 `n / 10`)。当前代码用 `n - 1` 是错误的,因为这不是去掉最后一位。