Online Compiler C

#include <stdio.h> void print_1_n(int n) { if(n==0) return; else { print_1_n(n-1); printf("%d ",n); } } int main() { print_1_n('5'); return 0; }
这段代码定义了一个递归函数 `print_1_n`,意图是打印从1到n的数字。但在 `main` 函数中调用时,传入了字符 `'5'` 而不是整数 `5`。

- 在 `main` 函数中,`'5'` 是字符常量,其ASCII值是53,而不是数字5。这会导致函数打印从1到53的数字,而不是预期的1到5。
- 递归函数 `print_1_n` 的逻辑本身是正确的:当n为0时返回,否则先递归调用 `print_1_n(n-1)`,再打印当前n的值,这样会按升序输出1到n。