TSC999 发表于 2017-5-1 07:46:41

小学奥数:有 m 级楼梯,每次可上1级、2级或3级,有几种走法?

小学五年级奥数问题:
从一层到达二层的楼梯共有 12 级。小明每跨一步,可以 1 级,或是 2 级,或是 3 级楼梯。问:从一层上到二层,共有几种走法?

解:如果只有1级台阶,共有 a1=1 种走法。如果有2级台阶,则有 a2=2 种走法。如果有3级台阶,则3=1+1+1=1+2=2+1=3,有 a3=4 种走法。
如果有4级台阶,可以分三种情况讨论:
      如果第一步跨1级,还剩3级,还有 a3=4 种走法;
      如果第一步跨2级,还剩2级,还有 a2=2 种走法;
      如果第一步跨3级,还剩1级,还有 a1=1 种走法。
因此, a4=a3+a2+a1=4+2+1=7种走法。

       一般地,如果有 n 级台阶,则共有 an= a(n-1)+ a(n-2)+ a(n-3) 种走法。
       于是, a6= a5+ a4+ a3=13+7+4=24; a7= a6+ a5+ a4=24+13+7=44; a8= a7+ a6+ a5=44+24+13=81;
                  a9= a8+ a7+ a6=81+44+24=149; a10= a9+ a8+ a7=149+81+44=274; a11= a10+ a9+ a8=274+149+81=504;
                  a12= a11+ a10+ a9=504+274+149=927。

       所以本题的答案就是12级台阶共有927种走法。

      但是,这种算法好吗? 如果陕西华山某山坡有 200 级台阶,小明每跨一步,可以是 1 级,或是 2 级,或是 3 级台阶。问:小明从坡底上到坡顶,共有几种走法?

mathe 发表于 2017-5-1 08:11:27

http://bbs.emath.ac.cn/thread-667-1-1.html
相当于连接中抛硬币出现连续三次正面问题,链接10楼是答案,32楼有比较完整的证明
于是我们可以得出$r$是方程$x^4-2*x^3+1=0$的唯一正实根,所以$r~=1.8392867552141611325518525646532866004$
而$u={1/r-1}/(6-4r)~=0.33622811699494109422536295401433241517$
而本题结果为$$
比如对于n=200,我们有
(09:20) gp > \p 200
   realprecision = 211 significant digits (200 digits displayed)
(09:23) gp > polroots(x^4-2*x^3+1)
%16 = ~
(09:23) gp > r=real(%)
%17 = 1.8392867552141611325518525646532866004241787460975922467787586394042032220819664257384354194283070141419798268592409741641784507465074369438315458204995137962496555396446136661215402779726781189410412
(09:23) gp > u=(1/r-1)/(2*3-4*r)
%18 = 0.33622811699494109422536295401433241515792609002045928044370624854382953699108191745012092780622316616338926362955987496703412199134661722478534716979661323670287361659441554928881504561537151324472766
(09:23) gp > u*r^201
%19 = 52622583840983769603765180599790256716084480555530641.000000000000000000000000000050488436444247109886150152300565002103643993810898360662690792585747039575871588017088719052767932070560385117926578853

aimisiyou 发表于 2017-5-1 11:27:26

\(f(m)=f(m-1)+f(m-2)+f(m-3),(m>=4) 其中f(1)=1,f(2)=2,f(3)=4,f(4)=7……\)

wayne 发表于 2017-5-1 11:38:38

Mathematica代码跑一下。得到公式如下:
RSolveValue[{a == a + a + a, a == 1,a == 2, a == 4}, a, n]
然后代值得到,跟mathe完全一样
In:= Round^n Root[-1+12 #1-44 #1^2+44 #1^3&,1]/.n->200]
Out= 52622583840983769603765180599790256716084480555530641
In:= Round^n Root[-1+12 #1-44 #1^2+44 #1^3&,1]/.n->12]
Out= 927

aimisiyou 发表于 2017-5-1 12:18:50

本帖最后由 aimisiyou 于 2017-5-1 12:25 编辑

math_humanbeing 发表于 2017-5-1 11:49
我看了半天,发现没人提到递推公式可以通过生成函数写成通项形式

如果你不嫌麻烦,可以利用生成函数把通项公式写出来。https://www.felix021.com/blog/read.php?2111

zeroieme 发表于 2017-5-1 12:24:00

对于小学生,递推公式已经足够好。生成函数是大学程度。

mathe 发表于 2017-5-1 12:25:32

我给的链接32楼已经包含通项公式形式了,用方程的根表示对应系数

mathematica 发表于 2017-5-1 15:05:12

RecurrenceTable[{a==a+a+a,a==1,a==2,a==4},a,{n,1,200}]

mathematica 发表于 2017-5-1 15:12:54

mathematica 发表于 2017-5-1 15:05


RSolve[{a == a + a + a, a == 1, a == 2,a == 4}, a, n]
{{a ->
   Root[-1 - #1 - #1^2 + #1^3 &, 1]^
   n Root[-1 + 12 #1 - 44 #1^2 + 44 #1^3 &, 1] +
    Root[-1 - #1 - #1^2 + #1^3 &, 3]^
   n Root[-1 + 12 #1 - 44 #1^2 + 44 #1^3 &, 2] +
    Root[-1 - #1 - #1^2 + #1^3 &, 2]^
   n Root[-1 + 12 #1 - 44 #1^2 + 44 #1^3 &, 3]}}

近似地就取
Root[-1 - #1 - #1^2 + #1^3 &, 1]^n Root[-1 + 12 #1 - 44 #1^2 + 44 #1^3 &, 1]

N[%,20]
0.61841992231939255094533043807106162610558831061794*1.8392867552141611325518525646532866004241787460976^n

mathematica 发表于 2017-5-1 15:22:21

对于特别大的n,可以使用类似于矩阵模幂的算法
{{1, 1, 1}, {1, 0, 0}, {0, 1, 0}}
就是这个矩阵,
除此之外,应该没有更好的计算的快速并且精确的办法
页: [1] 2 3 4 5
查看完整版本: 小学奥数:有 m 级楼梯,每次可上1级、2级或3级,有几种走法?