题目描述:用递归技术实现将输入的小于32768的非负整数逆序输出。如输入123,则输出321。
分析:尽管本题要处理的是“数”,但我们可以按照非数值问题进行分析,并建立相应的递归算法。第一步,先将问题进行简化。假设要输出的正整数只有一位,则该问题就简化为“逆序”输出一位正整数。对一位正整数实际上无所谓逆序不逆序,问题实际上简化为输出一位整数。
第二步,对于一个大于10 的数,在逻辑上可以将它分为两部分:个位上的数和个位以前的数全部数字。
第三步,将个位以前的全部数字看成一个整体,则为了逆序输出这个大于10 的正整数,可以按一下步骤进行操作:
1.输出个位上的数字;
2.逆序输出个位以前的全部数字。
这就是将原来的问题分解后,用较小的问题来解决原来大问题的算法。其中操作2中的问题“逆序输出个位以前的全部数字”只是对原问题在规模上进行了缩小。这样描述的操作步骤实际上就是一个递归的操作步骤。
整理上述分析结果,把第一步化简问题的条件作为递归结束条件,将第三步分析得到的算法作为递归算法,可以写出如下完整的递归算法描述。
若要输出的整数只有一位
【用递归方式实现将一个非负整数逆序输出】 则输出该整数
否则输出整数的个位数字,逆序输出除个位以外的全部数字。
结束。
注意:本题中的分析思路具有广泛的适用性,可以有效地针对一般的非数值问题找到简单的递归算法。
#include void reverse(int m);
main(){int n=321;
reverse(n);
printf("\n");
getch();
}void reverse(int m){printf("%d",m%10);
/*输出个位上数字*/if((m/10)!=0)/*如果剩余数字不为0则继续输出剩余的*/reverse(m/10);
}
From: http://syixinsyx.blog.163.com/blog/static/311822072008113104536489/
推荐阅读
- 人工智能|干货!人体姿态估计与运动预测
- 分析COMP122 The Caesar Cipher
- 技术|为参加2021年蓝桥杯Java软件开发大学B组细心整理常见基础知识、搜索和常用算法解析例题(持续更新...)
- C语言学习(bit)|16.C语言进阶——深度剖析数据在内存中的存储
- Python机器学习基础与进阶|Python机器学习--集成学习算法--XGBoost算法
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- leetcode|今天开始记录自己的力扣之路
- 人工智能|【机器学习】深度盘点(详细介绍 Python 中的 7 种交叉验证方法!)
- 网络|简单聊聊压缩网络