Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 8199|回复: 21

[已解决]已知:数列1,1,2,4,7,13,24,44,...求数列的第 n项.

[复制链接]
发表于 2013-8-29 07:43 | 显示全部楼层 |阅读模式
Sub test7()
    Dim n As Integer
    n = 5
    If n > 3 Then MsgBox F(n)
End Sub

Function F(ByVal n As Integer) As Long
    Select Case n
    Case 1
        F = 1
    Case 2
        F = 1
    Case 3
        F = 2
    Case Else
        F = F(n - 1) + F(n - 2) + F(n - 3)
    End Select
End Function


忽然想起用select case,试了下,真可以哦。

问1:像这样,求数列第n项的问题,怎样找出数列的规律呢?不会总靠肉眼吧,是不是有某种方法(我是网上搜来的)
问2:不用递归的话,怎么做呢?
谢谢!
最佳答案
2013-8-29 17:20
爱疯 发表于 2013-8-29 09:16
谢谢sliang28!
以前没这么想过,见证奇迹了。。。。。循环也好理解噢!

因为变量少,所以不需要用到数组变量。

这样的就可以了,也能照顾到x<4时返回结果
  1. Function a(x)
  2.     If x > 3 Then
  3.         t1 = 1: t2 = 1: t3 = 2 '1,1,2 开始的数列 或 t1 = 0: t2 = 0: t3 = 1 成为0,0,1开始也可
  4.         For i = 4 To x
  5.             t = t1 + t2 + t3
  6.             t1 = t2: t2 = t3: t3 = t
  7.         Next
  8.         a = t
  9.     Else
  10.         If x = 3 Then a = 2 Else a = 1
  11.     End If
  12. End Function
复制代码
我的才是最佳答案。呵呵。


发表于 2013-8-29 08:24 | 显示全部楼层
俺学习来了。假如数据(1,1,2,4,7,13,24,44,...)在A1单元格。以下用了调用函数的方法,若有不到之处,请老师指正。
  1. Sub aa()
  2. n = InputBox("请输入n的值")
  3. m1 = Application.Substitute([a1], ",", "@", n)
  4. m2 = Application.Substitute([a1], ",", "☆", n - 1)
  5. m3 = Application.Find("@", m1)
  6. m4 = Application.Find("☆", m2)
  7. m5 = m3 - m4
  8. MsgBox Mid([a1], m4 + 1, m5 - 1), 64
  9. End Sub
复制代码

找出第n个数据.rar

14.85 KB, 下载次数: 2

回复

使用道具 举报

发表于 2013-8-29 08:31 | 显示全部楼层
1 一般都是观察
2 可以用数学方法推导出通项公式,但有些是推导不出的。这个是fabonaci数列的扩展。可以查查fabonaci数列通项公式的推导过程
回复

使用道具 举报

发表于 2013-8-29 08:51 | 显示全部楼层
此数列n要>=4,从第4项以后才有规律,循环解法。
  1. Sub sliang28()
  2.     Dim arr
  3.     Dim i
  4.         arr = Array(1, 1, 2)
  5.         n = InputBox("请输入大于等于4的n值")
  6.             For i = 3 To n - 1
  7.                 temp = arr(0) + arr(1) + arr(2)
  8.                 arr(0) = arr(1)
  9.                 arr(1) = arr(2)
  10.                 arr(2) = temp
  11.             Next
  12.         MsgBox temp
  13. End Sub
复制代码

评分

参与人数 2 +11 金币 +10 收起 理由
爱疯 + 10 + 10 赞一个!学习了
gaofushuai + 1

查看全部评分

回复

使用道具 举报

发表于 2013-8-29 09:00 | 显示全部楼层
一般找规律都是要肉眼找的..

点评

只好等以后,遇到不好找规律的,再拿来说了  发表于 2013-8-29 09:25
回复

使用道具 举报

 楼主| 发表于 2013-8-29 09:03 | 显示全部楼层
ligh1298 发表于 2013-8-29 08:24
俺学习来了。假如数据(1,1,2,4,7,13,24,44,...)在A1单元格。以下用了调用函数的方法,若有不到之处,请老 ...

你是借助A1,查找第n项。
但实际中,A1事先并不都知道噢。

{:021:}

回复

使用道具 举报

发表于 2013-8-29 09:06 | 显示全部楼层
这么难的规律
回复

使用道具 举报

发表于 2013-8-29 09:08 | 显示全部楼层
我心飞翔410 发表于 2013-8-29 09:06
这么难的规律

只是+-*/规律的话都不能算是难的咯..
回复

使用道具 举报

 楼主| 发表于 2013-8-29 09:11 | 显示全部楼层
leolee82 发表于 2013-8-29 08:31
1 一般都是观察
2 可以用数学方法推导出通项公式,但有些是推导不出的。这个是fabonaci数列的扩展。可以查 ...


谢谢82!

第1次听说fabonaci数列。。。。。基础的,我都还不会啊{:301:}
这是搜索时遇到的,感觉是基础,也遇过类似的题,不会,正好学习一下。
回复

使用道具 举报

 楼主| 发表于 2013-8-29 09:16 | 显示全部楼层
sliang28 发表于 2013-8-29 08:51
此数列n要>=4,从第4项以后才有规律,循环解法。

谢谢sliang28
以前没这么想过,见证奇迹了。。。。。循环也好理解噢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-3-28 22:35 , Processed in 0.884997 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表