答案:
#includevoid print(int n) //定义一个打印一个数的每一位的函数 { if (n / 10 > 0) //如果是两位数及以上 { print(n / 10); //继续/10 printf("%d ", n%10); //打印这个数的最后一位 } else //如果是个位数 { printf("%d ", n % 10); //打印这个数 } } int main() { int n = 0; scanf("%d", &n); print(n); return 0; }
再发现printf("%d ",n%10);这一行代码无论是在if里还是在else里都会运行一次,所以可以再更简洁一下,优化代码如下
#includevoid print(int n) { if (n / 10 > 0) { print(n / 10); } printf("%d ", n % 10); } int main() { int n = 0; scanf("%d", &n); print(n); return 0; }
至于为什么会按照从前往后的顺序打印,而不是从后往前的逆序打印,具体逻辑可以见下图,也是递归的思想逻辑
猜你喜欢
网友评论
- 搜索
- 最新文章
- 热门文章