http://blog.sina.com.cn/butwho[订阅]
字体大小: 正文
用c++、java、basic、三种语言并分别用三种不同方法做的斐波那契数列(2007-06-06 09:44:05)
这不是上c++课么,恰巧前几天用过斐波那契数列(又名兔子数列),俺就顺便做了个放这儿了。


c++的斐波那契数列源程序,用了递归。感觉c++确实有些罗嗦。这算是面向机器的工业设计思想,不值得提倡。  也就是说,电脑看c++会觉得很舒服,但是程序员(当然包括俺们学生们)会用得很苦。
    #include<iostream.h>
    int fib(int n)
    {
    int f=0;
       if(n==1)return 0;
       if(n==2)return 1;
       f=fib(n-1)+fib(n-2);
    return f;
    }
    int main()
    {
    int n,i,m=0;
   
    cin>>n;
    m=fib(n);
    cout<<"第"<<n<<"项是"<<m<<endl;
    m=0;
    for(i=1;i<=n;i++)m=fib(i)+m;
    cout<<"第"<<n<<"项是"<<m<<endl;;
    return 0;
    }

VB的斐波那契数列代码,使用最常见的for循环加数组。窗口用了三个文本框,一个按钮。当时俺用的电脑没有c++,只好用excel的Visual Basic编辑器(word也有)。这个就是做宏的东西。
    Private Sub CommandButton1_Click()
    Dim i As Integer
    Dim a(200) As Integer
    Dim n As Integer
    n = TextBox1.Text
    a(1) = 0
    a(2) = 1

    For i = 3 To n
        a(i) = a(i - 1) + a(i - 2)
    Next i
    TextBox2.Text = a(n)
    TextBox3.Text = 0
    m = 0
    For i = 1 To n
        m = m + a(i)
    Next i
    TextBox3.Text = m
    End Sub



java (其实是js)其实是俺现学的。把下面的代码考到一个记事本文件里,保存时把扩展名存为html或者htm就能看到运行结果。这个程序用了个while循环,没用数组。
    <html>
    <head><title>斐波那契数列</title></head>
    <body>

    斐波那契数列前n项和<br />
    <script lauguage="Javascript">

    var a,b,c,m,i;

    i=1;
    a=0;
    b=1;
    m=0;
    while (i<=50)  //改变这个数值就能看前n项还有前n项和。

{
        c=a+b;
        m=m+c;
        document.write("第 " + i + "项是&nbsp"+ c + "&nbsp&nbsp&nbsp&nbsp" + "前       面每项的和是&nbsp" + m);
       document.write("<br />")
       a=b;
       b=c;
        i=i+1
    }
    </script>

    </body>
    </html>


以下是输出结果。html和js俺不是很熟(其实各种编程语言俺都不是很熟),没怎么排版,比较乱。
这个应该是斐波那契数列的通项还有前n项和,在这里是前50项的。可以通过改变上面的代码自己找出前n项的。
如果不嫌麻烦,可以用通项公式F(n)=(1/√5)*{[(1+√5)/2]^n - [(1-√5)/2]^n}自己算。
斐波那契数列前n项和
第 0项是    前面每项的和是 1
第 1项是    前面每项的和是 3
第 2项是    前面每项的和是 6
第 3项是    前面每项的和是 11
第 4项是    前面每项的和是 19
第 5项是 13    前面每项的和是 32
第 6项是 21    前面每项的和是 53
第 7项是 34    前面每项的和是 87
第 8项是 55    前面每项的和是 142
第 9项是 89    前面每项的和是 231
第 10项是 144    前面每项的和是 375
第 11项是 233    前面每项的和是 608
第 12项是 377    前面每项的和是 985
第 13项是 610    前面每项的和是 1595
第 14项是 987    前面每项的和是 2582
第 15项是 1597    前面每项的和是 4179
第 16项是 2584    前面每项的和是 6763
第 17项是 4181    前面每项的和是 10944
第 18项是 6765    前面每项的和是 17709
第 19项是 10946    前面每项的和是 28655
第 20项是 17711    前面每项的和是 46366
第 21项是 28657    前面每项的和是 75023
第 22项是 46368    前面每项的和是 121391
第 23项是 75025    前面每项的和是 196416
第 24项是 121393    前面每项的和是 317809
第 25项是 196418    前面每项的和是 514227
第 26项是 317811    前面每项的和是 832038
第 27项是 514229    前面每项的和是 1346267
第 28项是 832040    前面每项的和是 2178307
第 29项是 1346269    前面每项的和是 3524576
第 30项是 2178309    前面每项的和是 5702885
第 31项是 3524578    前面每项的和是 9227463
第 32项是 5702887    前面每项的和是 14930350
第 33项是 9227465    前面每项的和是 24157815
第 34项是 14930352    前面每项的和是 39088167
第 35项是 24157817    前面每项的和是 63245984
第 36项是 39088169    前面每项的和是 102334153
第 37项是 63245986    前面每项的和是 165580139
第 38项是 102334155    前面每项的和是 267914294
第 39项是 165580141    前面每项的和是 433494435
第 40项是 267914296    前面每项的和是 701408731
第 41项是 433494437    前面每项的和是 1134903168
第 42项是 701408733    前面每项的和是 1836311901
第 43项是 1134903170    前面每项的和是 2971215071
第 44项是 1836311903    前面每项的和是 4807526974
第 45项是 2971215073    前面每项的和是 7778742047
第 46项是 4807526976    前面每项的和是 12586269023
第 47项是 7778742049    前面每项的和是 20365011072
第 48项是 12586269025    前面每项的和是 32951280097
第 49项是 20365011074    前面每项的和是 53316291171
第 50项是 32951280099    前面每项的和是 86267571270



我要啦免费统计

俺总归不是专业人士,程序效率不高,不过能看到这些得用上面的代码应付一下作业应该没问题。

  • 评论加载中,请稍候...
发评论    明星私家相册

验证码:看不清楚数字吗?点击这里再试试。收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...