Board logo

标题: [数值计算] [已解决]求助批处理求出斐波那契数列的前项除以后项的值 [打印本页]

作者: 112    时间: 2019-11-4 18:29     标题: [已解决]求助批处理求出斐波那契数列的前项除以后项的值

本帖最后由 112 于 2020-4-15 21:24 编辑

求助大神!我想制作一个程序。这个程序可以求出斐波那契数列的前项除以后项的值。
程序输出如下:
  1. (1/1的值)
  2. (1/2的值)
  3. (2/3的值)
  4. (3/5的值)
  5. (5/8的值)
  6. (8/13的值)
  7. ...............
复制代码
众所周知,菲波那切数列的前项除以后项的结果会越来越接近黄金分割数。我就是好奇心强。想用批处理计算出来。
  1. @echo off
  2. set firstfib=1
  3. set secondfib=1
  4. set ans=
  5. 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%
  6. pause>nul
复制代码
这是鄙人的代码,只是不知道批处理如何进行小数运算和鄙人的程序为何出错。还请大神赐教。
作者: 112    时间: 2019-11-4 18:52

鄙人又改进了下。还请大神赐教。
  1. @echo off
  2. set firstfib=100000000000000000000000000
  3. set secondfib=100000000000000000000000000
  4. set ans=
  5. :conclusion
  6. set /a secondfib=secondfib+firstfib
  7. set /a ans=firstfib/secondfib
  8. echo %ans%
  9. goto :tmp
  10. :tmp
  11. set /a firstfib=firstfib+secondfib
  12. set /a ans=secondfib/firstfib
  13. echo %ans%
  14. goto :conclusion
  15. pause>nul
复制代码
而不知为何,运行结果有些诡异。鄙人已经尽力了!
作者: ivor    时间: 2019-11-4 19:10

本帖最后由 ivor 于 2019-11-4 21:06 编辑
  1. <# :
  2. @Powershell "& {[ScriptBlock]::Create((gc '%~f0' -raw)).Invoke()}" & pause & goto :eof
  3. #>
  4. function fib($num){
  5.     if($num -eq 1){
  6.         return 1;
  7.         }
  8.     if($num -eq 0){
  9.         return 1;
  10.         }
  11.     else{
  12.         return (fib ($num-2)) + (fib ($num-1));
  13.     }
  14. }
  15. for($a=0; $a -le 20;$a++){
  16.     (fib($a)) / (fib($a+1))
  17. }
复制代码
python花里胡哨版:
  1. fib=lambda num:1 if num <= 1 else fib(num-2)+fib(num-1)
  2. [print(fib(i)/fib(i+1)) for i in range(20)]
复制代码
python3.7 效率版
  1. fib=[1,1]
  2. for i in range(200):
  3.     fib.append(fib[i+1]+fib[i])
  4.     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