这段代码试图通过递归函数读取整数并打印其中的奇数,但存在几个问题。 - 函数 `print_odds` 中变量 `i` 每次递归调用都会被重新初始化为1,无法正确记录当前是第几个数。递归调用时 `i` 的值不会保留。 - 递归调用 `print_odds(void)` 的写法是错误的,调用函数时不需要写 `void`,直接写 `print_odds()` 即可。 - 函数定义末尾多了一个多余的右花括号 `}`,导致语法错误。 - 判断奇数的条件写成了 `i % 2 == 0`,但 `i` 是计数器,应该判断输入的数值 `n` 是否为奇数,即 `n % 2 != 0`。 - 检查递归调用时如何传递或更新计数器,思考如何让每次递归都知道当前是第几个数。 - 确认判断奇数的条件是否正确,应该检查输入的数字本身,而不是计数器。