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)
输出-