在线编译器 C

#include <stdio.h> void print_digits_reverse(int n){ if n < 10 { printf ("%d",n); } printf ("%d ",n % 10); print_digits_reverse(n - 1); } int main() { printf("%d", print_digits_reverse(25)); return 0; }
这段代码试图实现一个递归函数,将整数的各位数字反向打印出来。但代码中存在语法错误和逻辑问题。

- 第4行 `if n < 10` 缺少括号,C语言中条件表达式必须用圆括号括起来,应写为 `if (n < 10)`。
- 第8行递归调用 `print_digits_reverse(n - 1)` 会不断减少n的值,但这样会丢失数字的各位,而不是逐位提取。例如输入25,递归会变成24、23...,而不是提取个位2和十位5。
- 第12行 `printf("%d", print_digits_reverse(25))` 试图打印函数的返回值,但函数被声明为 `void`,没有返回值,这会导致编译错误。