📜  Julia中的递归

📅  最后修改于: 2022-05-13 01:55:00.120000             🧑  作者: Mango

Julia中的递归

Julia是一种动态的高级编程语言,具有高性能和高速度,用于在科学计算中执行操作。它非常适合计算复杂的问题。它是一种开源语言,因此所有源代码都可以轻松在线获得。

它与Python一样易于使用,但与 R 和Python相比,它的执行速度要快得多。 Julia 是一种通用语言,可用于各种任务,例如统计计算、数据分析、Web 开发、游戏开发等。

运行 Julia 的方法:

  • 通过一个 IDE 中的.jl文件
  • Julia REPL 中的逐个命令(读取评估打印循环

由于 Julia 在语法上与其他最常用的语言非常相似,因此编写和学习 Julia 更容易。 Julia程序将保存在带有 . jl扩展名。

简单的 Julia 程序:

打印 Hello Geeks 的简单程序,只需在解释器启动后键入以下代码。

Julia
# Julia code to print Hello Geeks
  
# print function
print("Hello Geeks!")


Julia
function mult_fn(num1, num2)  
    res = 0
  # iterative approach
  for i in 1:num2
    res += num1
  end
  return res
end
    
# Function call
ans = mult_fn(10, 11)
println(ans)


Julia
function mult_fn(num1, num2)
    # Base Case
    if num2 == 1
       return num1
    
    else
       # recursive call
       return num1 + mult_fn(num1, num2 - 1)
  end
end
    
# Function call
ans = mult_fn(10, 11)
println(ans)


Julia
# using built-in function
ans = factorial(5)
println(ans)


Julia
function fact_fn(num)  
    res = 1
  # iterative approach
  for i in 1:num
    res *= i
  end
  return res
end
    
# Function call
ans = fact_fn(10)
println(ans)


Julia
function fact_fn(num)
    # Base Case
    if num == 1
       return 1
    
    else
       # recursive call
       return num*fact_fn(num - 1)
  end
end
    
# Function call
ans = fact_fn(5)
println(ans)


在我们看到 Julia 中的递归之前,我们需要知道真正的递归是什么。

什么是递归?

这是一个函数直接或间接调用自身的过程。这是一种帮助我们用优雅的代码轻松解决复杂问题的技术。递归的经典问题包括河内塔。

递归的想法是用较小的问题来表示一个问题,并添加一些条件以在某些基本级别停止它。

数学解释

如果对象可以由以下属性定义,则它具有递归行为:

  • 基本案例 - 这是一个终止场景,不进一步使用递归来形成答案
  • 递归步骤-将以下情况减少到基本情况的步骤

朱莉娅——递归

让我们借助示例了解 Julia 语言中的递归是如何工作的。

示例 1:

在这个例子中,我们正在寻找两个数字的乘法。说 num1*num2。这与将 num1 添加到自身重复 num2 次相同。例如 – 5*4 与 5+5+5+5 相同。我们将以迭代和递归的方式对这个问题进行编码。

迭代代码:

朱莉娅

function mult_fn(num1, num2)  
    res = 0
  # iterative approach
  for i in 1:num2
    res += num1
  end
  return res
end
    
# Function call
ans = mult_fn(10, 11)
println(ans)

输出:

递归代码:

朱莉娅

function mult_fn(num1, num2)
    # Base Case
    if num2 == 1
       return num1
    
    else
       # recursive call
       return num1 + mult_fn(num1, num2 - 1)
  end
end
    
# Function call
ans = mult_fn(10, 11)
println(ans)

输出:

示例 2:

在这个例子中,我们正在寻找一个数字的阶乘。 n!=n*(n-1)*(n-2) 。 . . . *1。假设数字是 5。5!= 5*4*3*2*1=120。在 Julia 中,可以通过三种方式找到阶乘 - 使用内置的阶乘函数,另一种方式是迭代方式,第三种方式是递归方式。

使用内置函数-  

朱莉娅

# using built-in function
ans = factorial(5)
println(ans)

输出:

迭代代码-

朱莉娅

function fact_fn(num)  
    res = 1
  # iterative approach
  for i in 1:num
    res *= i
  end
  return res
end
    
# Function call
ans = fact_fn(10)
println(ans)

输出 -

递归代码-

朱莉娅

function fact_fn(num)
    # Base Case
    if num == 1
       return 1
    
    else
       # recursive call
       return num*fact_fn(num - 1)
  end
end
    
# Function call
ans = fact_fn(5)
println(ans)

输出-