linux - Linux shell 脚本中的 Pascal 三角形

标签 linux bash shell pascals-triangle

我正在尝试编写一个代码,它接收一个整数“n”作为参数,然后打印从 0、1、..、n 开始的帕斯卡三角形的第 n 行。 例如,如果条目是 3,则程序打印 1 3 3 1。 到目前为止,我写了一个代码来打印整个三角形,但我不能只打印最后一行。 这是我的

echo "Insert the row:" read n for((i=0;i<$n;i++)) 
do      
eval"a$i=($(w=1;v=1
        for((j=0;j<$n-$i;j++))
        do 
            [ $i -eq 0 -o $j -eq 0 ]&&{ v=1 && w=1; }||v=$((w+a$((i-1))[$((j))]))
            echo -n "$v "
            w=$v
        done))"
     eval echo "$(for((k=0;k<=$i;k++)) 
        do 
            eval "echo -n \"\$((a\$((i-k))[k])) \"" 
        done)" 
    done

最佳答案

#!/bin/bash
read -p "Insert the row:"  n

typeset -A Tab

for((i=0;i<=$n;i++))
do
  Tab[$i,0]=1
  Tab[$i,$i]=1
  for((j=1;j<$i;j++))
  do
    a=${Tab[$((i-1)),$((j-1))]}
    b=${Tab[$((i-1)),$j]}
    Tab[$i,$j]=$(( a + b ))
  done
done

#print result
for((j=0;j<=$n;j++))
do
  echo -n ${Tab[$n,$j]} " "
done
echo

测试:

Insert the row:3
1  3  3  1 

关于linux - Linux shell 脚本中的 Pascal 三角形,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33290818/

相关文章:

bash - 可移植的 shell 脚本有什么用?

linux - 是否可以在 shell 脚本中创建非子进程?

linux - Bash - 设置 grep -rl 只返回文件名,而不是完整路径

linux - 保持 screen 活跃

c - 使用通配符 ip 的套接字绑定(bind)

用于获取和解码 kubernetes secret 的 Bash 函数

c++ - 适用于 Linux C++ 的 Visual Studio 2017 : "Cannot find or open the symbol file"

linux - 在没有dos2unix的情况下递归地转换目录和子目录中所有文件的所有EOL(dos-> unix)

bash - 如何使用 sed 搜索日期之间的日志

regex - 赛德。如何删除与其周围的模式和字符串匹配的行?