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

#include <stdio.h> void print_num(int num){ if(num<10){ printf("%d ",num); return; } print_num(num/10); printf("%d ",num%10); }
这段代码定义了一个递归函数 `print_num`,它的功能是将一个整数按从高位到低位的顺序,逐位打印出来,每位数字之间用空格隔开。

- 递归的终止条件是当 `num` 小于10时,直接打印这个数字并返回。
- 否则,函数先递归调用自身处理 `num/10`(即去掉最后一位的数字),然后再打印 `num%10`(即最后一位数字)。

代码本身逻辑是正确的,但有一个小问题需要注意:当输入的数字是负数时,递归会陷入无限循环,因为负数小于10的条件不成立,且除以10后仍然是负数。