[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
已解决

[数值计算] 批处理如何实现农夫养牛的经典面试题?

悬赏金额: 30

一个农夫养了一头牛,三年后,这头牛每年会生出1头牛,生出来的牛三年后,又可以每年生出一头牛……
问农夫10年后有多少头牛?n后年呢?

最佳答案 zqz0012005
斐波那契数列
f(n) = f(n - 1) + f(n - 2)
第n年的牛为去年牛的个数f(n - 1)加上今年出生的牛的个数,而今年出生的牛的个数为前年牛的个数即f(n - 2),因为前年的牛今年至少3岁,都可以生。

递归比较容易。

从农夫养牛问题推广到斐波那契数列
http://www.cnblogs.com/chinese-z ... /10/31/1593586.html
Do All in Command Line

斐波那契数列
f(n) = f(n - 1) + f(n - 2)
第n年的牛为去年牛的个数f(n - 1)加上今年出生的牛的个数,而今年出生的牛的个数为前年牛的个数即f(n - 2),因为前年的牛今年至少3岁,都可以生。

递归比较容易。

从农夫养牛问题推广到斐波那契数列
http://www.cnblogs.com/chinese-z ... /10/31/1593586.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

  1. @echo off&setlocal enabledelayedexpansion
  2. set a=1
  3. set b=0
  4. set c=0
  5. set d=0
  6. set/pn=
  7. for /l %%i in (1,1,%n%) do (
  8. set/ad+=c
  9. set e=!d!
  10. set c=!b!
  11. set b=!a!
  12. set a=!e!
  13. )
  14. set/as=a+b+c+d
  15. echo %s%
  16. pause
复制代码
土办法

TOP

等比数列嘛
  1. @echo off
  2. set/p year=你要知道几年后牛的数目?:
  3. set/a n=year/3-1,s=2^<^<n
  4. if %s% equ 0 set/a s=1
  5. echo %year%年后农夫有%s%条牛
  6. pause>nul
复制代码
不能超过set/a的运算范围,即结果小于2的31次方

TOP

看错题意,编辑掉。。。

[ 本帖最后由 batman 于 2009-10-31 23:40 编辑 ]
***共同提高***

TOP

简单的等比数列问题,给这么高的悬赏分?
2楼正解,等楼主送分吧,我就不加了。

大家对批处理的讨论越来越偏离正道了。。。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

2楼是正解吗?有把“三年后,这头牛每年会生出1头牛”的“三年后”考虑进去了吗?

TOP

的确疏忽了,“三年后,这头牛每年会生出1头牛”,是每年,不再是每三年。
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

转一个非递归算法:
  1. @echo off
  2. set /a n=10
  3. rem set /p n=多少后年:
  4. set /a age1=1, age2=0, age3=0
  5. for /l %%a in (1 1 %n%) do (
  6.     set /a temp=age3, age3+=age2, age2=age1, age1=temp
  7. )
  8. set /a count=age1+age2+age3
  9. echo %n%年后牛有%count%
  10. pause&exit/b
复制代码
经典的农夫养牛问题(常考的面试题)
http://topic.csdn.net/u/20091001 ... F-97C524DAE3C4.html
命令行参考:hh.exe ntcmds.chm::/ntcmds.htm
求助者请拿出诚心,别人才愿意奉献热心!
把查看手册形成条件反射!

TOP

呵呵,确实看错题意

TOP

返回列表