bash - bash 中的递归函数

标签 bash function recursion

我想在 bash 中做一个返回数字阶乘的函数

这是当前代码不起作用的代码,任何人都可以告诉我哪里出了问题以及如何更正它吗?我刚开始学习 bash,还不是很了解。

#!/bash/bin
factorial()
{
  let n=$1
  if (( "$n" <= "1" ))
  then return 1
  else
  factorial n-1
  return $n*$?
  fi
  return 0
}
factorial 5
echo "factorial 5 = $?"

最佳答案

有几种语法和一个很明显的逻辑(返回0)

工作版本如下:

#!/bin/bash

factorial()
{
    if (( $1 <= 1 )); then
        echo 1
    else
        last=$(factorial $(( $1 - 1 )))
        echo $(( $1 * last ))
    fi
}
factorial 5

你错过了:

  1. 返回错误(应该使用echo)

  2. shbang 行(是/bin/bash 不是/bash/bin)

  3. 不能在 (( ))$(( )) (或 let 之外进行算术运算,但是 (( )) 是首选)

关于bash - bash 中的递归函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9682524/

相关文章:

php - 将 BASH 关联数组传递给 PHP 脚本

mysql - bash 脚本中的未知选项 '--print-defaults'

c - 如何编辑此函数调用以仅扫描数组的一半?

python - 基于双字母组频率替换单词,Python

algorithm - 大树列表递归程序

java - 递归字符串连接

bash - 使用 bash 脚本解析文件

c++ - 将非指针分配给指针? (在 C++ 中子类化指针类型?)

python - 这种组合算法的时间复杂度

linux - 如何正确使用测试命令?