#!/bin/bash# gcd.sh: 最大公约数# 用Euclid运算法则# 两个整数的"最大公约数"#+ 是能被这两个整数整除的大最整数.# Euclid运算法则采用逐次除法.# 每一次都重新赋值,#+ 被除数 <--- 除数#+ 除数 <--- 余数#+ 直到 余数 = 0.#+ 最后被传递的值中:最大公约数 = 被除数.## 关于Euclid运算法则的讨论有一个出色的讨论,# 访问Jim Loy的网站, http://www.jimloy.com/number/euclids.htm.# ------------------------------------------------------# 参数检查ARGS=2E_BADARGS=65if [ $# -ne "$ARGS" ]thenecho "Usage: `basename 0ドル` first-number second-number"exit $E_BADARGSfi# ------------------------------------------------------gcd (){dividend=1ドル # 随意赋值.divisor=2ドル #+ 这里在两个参数赋大的还是小的都没有关系.# 为什么?remainder=1 # 如果在循环中使用未初始化的变量,#+ 在循环中第一个传递值会使它返回一个错误信息#until [ "$remainder" -eq 0 ]dolet "remainder = $dividend % $divisor"dividend=$divisor # 现在用最小的两个数字来重复.divisor=$remainderdone # Euclid运算法则} # 最后的$dividend变量值就是最大公约数.gcd 1ドル 2ドルecho; echo "GCD of 1ドル and 2ドル = $dividend"; echo# 练习:# --------# 检测命令行参数以确保它们是整数,#+ 如果不是整数则给出一个适当的错误信息并退出脚本.exit 0
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。