概述
SHELL版本 写一个最基础的版本
NUM=3;
while true ; do
N2=`expr $NUM % 2`
if [ $N2 == 1 ] ; then
N3=`expr $NUM % 3`
if [ $N3 == 2 ]; then
N5=`expr $NUM % 5`
if [ $N5 == 4 ]; then
N6=`expr $NUM % 6`
if [ $N6 == 5 ]; then
N7=`expr $NUM % 7`
if [ $N7 == 0 ]; then
echo $NUM
exit;
else
NUM=`expr $NUM + 1`
continue
fi
else
NUM=`expr $NUM + 1`
continue
fi
else
NUM=`expr $NUM + 1`
continue
fi
else
NUM=`expr $NUM + 1`
continue
fi
else
NUM=`expr $NUM + 1`
continue
fi
done
优化第一步:使用 && 替代多个if判断
NUM=3;
while true ; do
if [ `expr $NUM % 2` == 1 ] && [ `expr $NUM % 3` == 2 ] && [ `expr $NUM % 5` == 4 ] && [ `expr $NUM % 6` == 5 ] && [ `expr $NUM % 7` == 0 ]; then
echo $NUM
break
else
NUM=`expr $NUM + 1`
continue
fi
done
优化结果:
效果看上去简洁了
效率没有任何提高
第二步优化:使用shell自带的函数
NUM=3;
while true ; do
if [ $(($NUM%2)) == 1 ] && [ $(($NUM%3)) == 2 ] && [ $(($NUM%5)) == 4 ] && [ $(($NUM%6)) == 5 ] && [ $(($NUM%7)) == 0 ]; then
echo $NUM
break
else
NUM=`expr $NUM + 1`
continue
fi
done
优化结果:
运行时间缩短了90%,牛逼,但是超越python版本还是有一点距离
第三步优化:替换到后面的自增
NUM=3;
while true ; do
if [ $(($NUM%2)) == 1 ] && [ $(($NUM%3)) == 2 ] && [ $(($NUM%5)) == 4 ] && [ $(($NUM%6)) == 5 ] && [ $(($NUM%7)) == 0 ]; then
echo $NUM
break
else
NUM=$(($NUM + 1))
continue
fi
done
优化结果:
时间低于python的时间,哈哈哈哈哈,很好很强大
Python版本
#!/usr/bin/env python
n = 3
while True:
if (n%2 == 1) and (n%3 == 2) and (n%5 == 4) and (n%6 == 5) and (n%7 == 0):
print n
break
else:
n += 1
continue
最后
以上就是孤独嚓茶为你收集整理的python爱因斯坦阶梯_实现韩信点兵的shell脚本效率的全部内容,希望文章能够帮你解决python爱因斯坦阶梯_实现韩信点兵的shell脚本效率所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复