Online Compiler C

#include <stdio.h> void print_odds(void) { int num; scanf("%d", &num); if (num == 0) { return; } if (num % 2 != 0) { printf("%d ", num); } print_odds(); } int main() { print_odds(); return 0; }
这段代码定义了一个递归函数 `print_odds`,它从标准输入读取整数,如果读取到0则停止递归,否则判断当前数是否为奇数并打印,然后递归调用自身继续读取下一个数。`main` 函数启动这个递归过程。

- 注意递归的终止条件:当输入为0时函数直接返回,但此时最后一个非零奇数可能已经打印,而0本身不会被处理。检查递归调用是否在判断奇偶之前进行,这可能导致输入顺序与预期不符。
- 思考递归调用的位置:当前代码在打印奇数后立即递归,这意味着每次递归都会先读取新数再处理旧数。如果希望按输入顺序处理,需要调整递归调用和判断打印的顺序。