powershell 递归 算法 的例子
2013-01-29 10:42
253 查看
<# 递归,简单地说就是函数不停地调用自身。 循环和递归,是程序常用解题方式,几乎99%的语言都有。 递归使写程序更简单,更清晰,但比循环更占内存。
那么如何从递归中退出呢?一般建议把递归放在if中,或else中。也就是说在递归外面判断条件。条件成立,或者不成立,再无限递归。
不过貌似脚本语言递归的性能都不太好,因为库都比较大,出栈入栈就好像胖子过通道。 而powershell的递归在脚本语言中还算是差的,因为年头毕竟短,而且并没专门考虑过优化。 当然这都是传言,我的简单试验,性能还可以,大家也多用用递归,多测测啊。
#>
function 用递归法计算阶乘($值)
{
if($值 -gt 1)
{
return ( $值 * (用递归法计算阶乘 ($值-1)) )
}
else
{
return $值
}
}
#for($i=21;$i -lt 31;$i++)
#{
#Write-Host (用递归法计算阶乘 $i)
#}
#------------------递归结果超过double类型的最大值时,就要用下面的【无穷大正整数】,但注意:安装 .net4 先! --------------------------------
[reflection.assembly]::loadwithpartialname("System.Numerics")
$anser_first="1005"
$大数=[System.Numerics.BigInteger]::Parse($anser_first)
Measure-Command {Write-Host (用递归法计算阶乘 $大数) }
算1005位用了 2秒多
powershell 递归 算法 例子 powershell 灰主牛 官网 官方网址 电子书 阅读器 语音计算器 efs copy backup ps_ping ps_tracert 三贱客 天罡茅山秘
那么如何从递归中退出呢?一般建议把递归放在if中,或else中。也就是说在递归外面判断条件。条件成立,或者不成立,再无限递归。
不过貌似脚本语言递归的性能都不太好,因为库都比较大,出栈入栈就好像胖子过通道。 而powershell的递归在脚本语言中还算是差的,因为年头毕竟短,而且并没专门考虑过优化。 当然这都是传言,我的简单试验,性能还可以,大家也多用用递归,多测测啊。
#>
function 用递归法计算阶乘($值)
{
if($值 -gt 1)
{
return ( $值 * (用递归法计算阶乘 ($值-1)) )
}
else
{
return $值
}
}
#for($i=21;$i -lt 31;$i++)
#{
#Write-Host (用递归法计算阶乘 $i)
#}
#------------------递归结果超过double类型的最大值时,就要用下面的【无穷大正整数】,但注意:安装 .net4 先! --------------------------------
[reflection.assembly]::loadwithpartialname("System.Numerics")
$anser_first="1005"
$大数=[System.Numerics.BigInteger]::Parse($anser_first)
Measure-Command {Write-Host (用递归法计算阶乘 $大数) }
算1005位用了 2秒多
powershell 递归 算法 例子 powershell 灰主牛 官网 官方网址 电子书 阅读器 语音计算器 efs copy backup ps_ping ps_tracert 三贱客 天罡茅山秘
相关文章推荐
- 算法基础_递归的例子
- 算法:递归总结(2)例子
- 用递归法:设计算法求解汉诺塔问题,并编程实现。 (1) Hanoi(汉诺)塔问题分析 这是一个古典的数学问题,是一个用递归方法解题的典型例子。问题是这样的:古代有一个梵塔,塔内有3个座 A,B,C
- 递归创建文件夹的例子
- 五大基础算法(枚举、递归、分治、贪心、模拟)
- 一步一步写算法(之循环和递归)
- 二叉树创建及遍历算法(递归及非递归)
- 快速排序经典算法(分治法,挖坑法,前后指针法,非递归)
- 二叉树创建及遍历算法(递归及非递归)
- [算法入门]快速排序非递归方法(Java实现),大家一起来找茬啊~
- PowerShell中简单的自定义函数和调用函数例子
- KNN算法思想与应用例子
- PowerShell中调用外部程序和进程操作命令例子
- java 用递归获取一个目录下的所有文件路径的小例子
- 一步一步写算法(之递归和堆栈)
- 贪心算法经典例子
- python之路第五篇之递归(进阶篇:续:经典例子剖析)
- 一列数字的规则如下;1,1,2,3,5,8,13,21,34........ 求第30位数字是多少,用递规和非递归两种方法算法实现
- Powershell打印文本文档例子
- 算法系列—快速排序及其优化(递归)