标题: [数值计算] [已解决]求助批处理求出斐波那契数列的前项除以后项的值 [打印本页]
作者: 112 时间: 2019-11-4 18:29 标题: [已解决]求助批处理求出斐波那契数列的前项除以后项的值
本帖最后由 112 于 2020-4-15 21:24 编辑
求助大神!我想制作一个程序。这个程序可以求出斐波那契数列的前项除以后项的值。
程序输出如下:- (1/1的值)
- (1/2的值)
- (2/3的值)
- (3/5的值)
- (5/8的值)
- (8/13的值)
- ...............
复制代码
众所周知,菲波那切数列的前项除以后项的结果会越来越接近黄金分割数。我就是好奇心强。想用批处理计算出来。- @echo off
- set firstfib=1
- set secondfib=1
- set ans=
- for /l %%a in ( 1 , 1 , 100 ) do set \a secondfib=secondfib+firstfib&set \a firstfib=firstfib+secondfib&set /a ans=firstfib/secondfib&echo %ans%
- pause>nul
复制代码
这是鄙人的代码,只是不知道批处理如何进行小数运算和鄙人的程序为何出错。还请大神赐教。
作者: 112 时间: 2019-11-4 18:52
鄙人又改进了下。还请大神赐教。- @echo off
- set firstfib=100000000000000000000000000
- set secondfib=100000000000000000000000000
- set ans=
- :conclusion
- set /a secondfib=secondfib+firstfib
- set /a ans=firstfib/secondfib
- echo %ans%
- goto :tmp
- :tmp
- set /a firstfib=firstfib+secondfib
- set /a ans=secondfib/firstfib
- echo %ans%
- goto :conclusion
- pause>nul
复制代码
而不知为何,运行结果有些诡异。鄙人已经尽力了!
作者: ivor 时间: 2019-11-4 19:10
本帖最后由 ivor 于 2019-11-4 21:06 编辑
- <# :
- @Powershell "& {[ScriptBlock]::Create((gc '%~f0' -raw)).Invoke()}" & pause & goto :eof
- #>
- function fib($num){
- if($num -eq 1){
- return 1;
- }
- if($num -eq 0){
- return 1;
- }
- else{
- return (fib ($num-2)) + (fib ($num-1));
- }
- }
- for($a=0; $a -le 20;$a++){
- (fib($a)) / (fib($a+1))
- }
复制代码
python花里胡哨版:- fib=lambda num:1 if num <= 1 else fib(num-2)+fib(num-1)
- [print(fib(i)/fib(i+1)) for i in range(20)]
复制代码
python3.7 效率版- fib=[1,1]
- for i in range(200):
- fib.append(fib[i+1]+fib[i])
- print(f"{i}: {fib[i]} / {fib[i+1]} = {fib[i]/fib[i+1]}")
复制代码
作者: Batcher 时间: 2019-11-4 19:12
参考:批处理浮点计算
http://bbs.bathome.net/thread-3322-1-1.html
http://bbs.bathome.net/thread-3372-1-1.html
作者: 112 时间: 2019-11-4 19:24
谢谢大神!
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |