在线编译器 C

#include <stdio.h> int max_find(int max) { int save, save_save; scanf("%d ", max); if (max == 0) { return save_save; } if ( max >= save) { svae_save = max; } save = max; max_find(max); } int main() { print_odds(); return 0; }
这段代码试图通过递归查找输入数字中的最大值,但存在多个问题。代码中调用了未定义的函数 `print_odds()`,而 `max_find` 函数的逻辑也不正确。

- 在 `max_find` 函数中,`scanf` 的第二个参数应该是变量的地址,你写成了 `max`,应该用 `&max`。同时,局部变量 `save` 和 `save_save` 没有初始化,它们的初始值是不确定的,这会导致比较和返回结果出错。
- 递归调用 `max_find(max)` 没有处理返回值,而且递归的终止条件只检查了 `max == 0`,但 `save_save` 在递归中无法正确保存最大值,因为每次递归调用都会创建新的局部变量。