C语言for循环序列相减函数调整:实现从最小到最大数依次相减
改造后的C函数实现方案
原函数存在的问题
原函数仅支持a >= b的场景,循环从a-1向下遍历到b,无法适配a < b时从小到大遍历区间的需求。
改造思路
- 首先判断参数
a和b的大小,确定区间的最小/最大值,保证遍历顺序始终从小到大 - 初始运算值取区间的最小值,依次减去区间内后续的所有整数即可
改造完成的代码
int myfunc(int a, int b) { // 确定区间的上下限,保证从小到大遍历 int start = a < b ? a : b; int end = a > b ? a : b; int result = start; // 从第二个数开始依次相减 for(int index = start + 1; index <= end; index++) { result -= index; } return result; }
效果验证
输入a=5、b=8时,运算逻辑为5-6-7-8,返回结果为-16,完全符合需求。无论输入的a和b谁大谁小,都会自动按从小到大的顺序执行相减操作。
内容的提问来源于stack exchange,提问作者Amr Shawkat
相关产品推荐
相关产品推荐

