| 编程中国 | 业界新闻 | 技术文章 | 视频教程 | 下载频道 | 程序源码 | 个人空间 | 编程论坛
全能ASP/PHP/ASP.NET主机,支持月付专业 MSSQL 数据库空间,支持月付专业 MySQL 数据库空间,支持月付买域名,送MP3、MP4
高端软件开发 = 年薪十万不是梦赛孚耐:软件保护加密专家身份认证令牌USB KEY买空间,免费送域名(厦门中资源)
共有 212 人关注过本帖
标题:一个递归的问题
收藏  订阅  推荐  打印 
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5
一个递归的问题

先谢谢大家能看本人的帖,问题如下谢谢:
#include<iostream.h>
const int N=8;
long Fibo(int n);
void main()
{
    long f=Fibo(N);
    cout<<f<<endl;
}


long Fibo(int n)
{
    if(n==1)
        return 1L;
    else
        if(n==2)
            return 1L;
        else
            return Fibo(n-1)+Fibo(n-2);
}


const是啥意思啊?这个递归使用时是怎么算的?先求出Fibo(n-1)函数的值还是算出一个就执行加运算?这里回归时它是怎么回归的?我笔算一个函数,当n为3时返回1,但是我在这里就卡住了!要怎么回归啊?还有return 1L  L是啥意思?是LONG?还是?
谢谢大家,给我帮帮忙!谢谢!
搜索更多相关主题的帖子: 递归  
2008-8-29 14:36
fish_
Rank: 2
等级:注册会员
帖子:46
积分:562
注册:2007-4-25

看看C++大学教程吧!看了你就不会提这种问题了!~ - ~
2008-8-29 15:10
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5

C++大学教程?书?还是?
我没有这本书?能否说明点?谢谢了!

编程小菜
2008-8-29 15:15
codeplayer
Rank: 1
等级:新手上路
帖子:4
积分:154
注册:2008-8-26

const 说明N是常量;
先算F(n-1),再算F(n-2),然后加起来;
return 1L,加个L,指明1是long型
2008-8-29 22:25
xmnathan
Rank: 2
等级:注册会员
威望:1
帖子:44
积分:614
注册:2008-8-30

const 就是定义常量
递归 比如你算得是Fibo数列的第8个元素,他就会先算7和6,要算7和6就要算6和5,5和4....最后追溯到2和1 即已知的值 然后反过来进行加运算先算第3个元素然后第4个...,最后加回到第8个元素得到结果

看C++ Primer吧 有中文第4版电子版的

递归
#include <iostream>
using namespace std;
int ff(int n)
{
    int f;
    if((n==1)|(n==2)) f=1;
    else f=ff(n-1)+ff(n-2);
    return f;
}
void main()
{
    int n;
    cout<<"输入数列输出个数"<<endl;
    cin>>n;
    if(n<1)
    {
        system("cls");
        cout<<"输入错误请重新输入"<<endl;
        main();
    }
    for(int i=1;i<=n;i++)
        cout<<ff(i)<<"  ";
}
不用递归更简单,循环
#include <iostream>
using namespace std;
void main()
{
    int n;
    cout<<"输入限定范围值";
    cin>>n;
    cout<<endl<<"数列输出:"<<endl;
    int a,b,c;
    a=1,b=1;
    cout<<a<<"  "<<b<<"  ";
    do
    {
        c=a+b;
        if(c<n)
                {
            cout<<c<<"  ";
                }
        a=b,b=c;
     }while(c<n);
}
2008-8-30 10:41
独孤小梦
Rank: 3Rank: 3
等级:中级会员
帖子:255
积分:2958
注册:2008-6-5

非常感谢大家,我好好理解一下吧!我就想知道先算前面的还是一起?现在知道了!回归的话,我在好好算下!

编程小菜
2008-8-31 12:55
关于我们 | 广告合作 | 编程中国 | 清除Cookies | Archiver | WAP | TOP

编程中国 版权所有,并保留所有权利。鲁ICP备08000592号
Powered by Discuz, Processed in 0.057228 second(s), 9 queries.
Copyright©2004-2008, BCCN.NET, All Rights Reserved