PowerShell免费软件

powershell 递归 算法 的例子

        递归,简单地说就是函数不停地调用自身。 循环和递归,是程序常用解题方式,几乎99%的语言都有。 递归使写程序更简单,更清晰,但比循环更占内存。

        那么如何从递归中退出呢?一般建议把递归放在if中,或else中。也就是说在递归外面判断条件。条件成立,或者不成立,再无限递归。

        不过貌似脚本语言递归的性能都不太好,因为库都比较大,出栈入栈就好像胖子过通道。 而powershell的递归在脚本语言中还算是差的,因为年头毕竟短,而且并没专门考虑过优化。 当然这都是传言,我的简单试验,性能还可以,大家也多用用递归,多测测啊。

 

复制代码
function 用递归法计算阶乘($值)
{
    if($值 -gt 1)
    {
        return ( $值 * (用递归法计算阶乘  ($值-1))  )    
    }
    else
    {
        return $值
    }
}

#递归结果超过double类型的最大值时,就要用下面的【无穷大正整数】,但注意:安装 .net4 先! 
[reflection.assembly]::loadwithpartialname("System.Numerics")
$anser_first="1005"
$大数=[System.Numerics.BigInteger]::Parse($anser_first)

Measure-Command 
{
    Write-Host  (用递归法计算阶乘 $大数)
}
复制代码

 

----------------------------测试结果----------------------------

2013年测试成绩,算1005位用了2秒多。

Ticks             : 26510676

Days              : 0

Hours             : 0

Milliseconds      : 651

Minutes           : 0

Seconds           : 2

TotalDays         : 3.06836527777778E-05

TotalHours        : 0.000736407666666667

TotalMilliseconds : 2651.0676

TotalMinutes      : 0.04418446

TotalSeconds      : 2.6510676

----------------------------

2017年测试成绩,算1005位用了半秒多。

Ticks             : 5438699

Days              : 0

Hours             : 0

Milliseconds      : 543

Minutes           : 0

Seconds           : 0

TotalDays         : 6.29479050925926E-06

TotalHours        : 0.000151074972222222

TotalMilliseconds : 543.8699

TotalMinutes      : 0.00906449833333333

TotalSeconds      : 0.5438699

 ----------------------------

2022年用 powershell 7.3 preview 5 测试 230毫秒 (基于.net 7)

计算速度越来越快了!

哦 17年,22年用的是同一台机子。13年用的啥机子忘了。

 

powershell 递归 算法 例子 powershell  灰主牛 官网 官方网址 电子书  阅读器  语音计算器 efs copy backup ps_ping ps_tracert 三贱客 天罡茅山秘

posted on   PowerShell免费软件  阅读(2594)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端
< 2013年1月 >
30 31 1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31 1 2
3 4 5 6 7 8 9

导航

统计

点击右上角即可分享
微信分享提示