bash - 如何使用shell脚本获得所有奇数的乘积直到n
问题描述
我试图让所有奇数的乘积达到 n。但输出始终为 0。
read -p "Enter a number: " n
prod=0
for((k=1; k<=n; k++))
do
if [ k%1==0 ]
then
prod=$((prod*=k))
fi
done
echo "Product of odd counting numbers until $n is $prod"
解决方案
对于此任务,模运算是多余的。for
只需使用增量为 2的 C 样式循环:
#!/bin/bash
read -p "Enter a number: " n
prod=1
for ((k = 3; k <= n; k += 2)); do ((prod *= k)); done
echo "Product of odd counting numbers until $n is $prod"
请注意,产品很容易溢出。例如,在 64 位系统上,whenn
等于或大于 35。如果您想要更大n
s 的正确结果,您可能需要使用该bc
实用程序:
#!/bin/bash
read -p "Enter a number: " n
prod=1
for ((k = 3; k <= n; k += 2)); do prod+="*$k"; done
printf "Product of odd counting numbers until %d is " "$n"
bc <<< "$prod"
请注意,在这种情况下,prod+="*$k"
是字符串连接,而不是算术运算。
推荐阅读
- python - 终端在 PyCharm 中有不同的 Python 版本
- python - 性能调优:df 中的字符串字数
- flutter-layout - Flutter SliverAppBar 内容一致?
- angular - 如何在 completeNewPassword 上设置自定义属性?
- arduino - 类实例化仅在全局范围内有效,但在设置中无效
- python - 将输出与列表进行比较
- laravel - Laravel Redis 哨兵会话
- statistics - 计算区域对国家 GDP 增长的贡献
- python - 使用 scipy.optimize 估计概率回归
- git - 为什么 Git 在尝试拉动时向我发出警告?