标题:关于数列
只看楼主
流年226
Rank: 1
等 级:新手上路
帖 子:37
专家分:7
注 册:2013-4-27
结帖率:71.43%
已结贴  问题点数:10 回复次数:5 
关于数列
#include<stdio.h>
long x(int a);
void main()
{   
    int i;
    for(i=1;i<16;i++)
    {
        printf("%d\t",x(i));
            if(i%5==0)
                printf("\n");
    }
}
long x(int a)
{
    long y;
    if(a==1)
        y=0;
    if(a==2)
        y=1;
    else
        y=x(a-2)-2*x(a-1);
    return (y);
}
其中x1=0,x2=1,x(n)=x(n-2)-2x(n-1),
用函数求出这个数列的前十五项并输出。
我的程序编译无错误,但无法执行,求指导,
谢谢各位了。
搜索更多相关主题的帖子: void 
2013-06-03 16:59
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:2 
无法运行是什么情况?
 y=x(a-2)-2*x(a-1); 这样,对于15层递归,会运行很久的。性能上吃不消吧

我行我乐
我的博客:
http://blog.yuccn. net
2013-06-03 18:39
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 


#define MAX_BUF  100
long g_result[MAX_BUF] = { 0 };

// 0 1 0 - 2 * 1

long x(int a)
{
    if(a <= 1 || a >= MAX_BUF)
        return 0;

    if(a==2)
        return 1;

    if (g_result[a] == 0)
    {
        g_result[a] = x(a-2)-2*x(a-1);
    }

    return g_result[a];
}


做个缓存吧,速度绝对够快了

我行我乐
我的博客:
http://blog.yuccn. net
2013-06-03 18:50
apull
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:三体星系
等 级:版主
威 望:185
帖 子:1404
专家分:8479
注 册:2010-3-16
得分:8 
程序代码:
long x(int a)
{
    long y;
    if(a==1)
        y=0;
    else if(a==2)
            y=1;
        else
            y=x(a-2)-2*x(a-1);
    return (y);
}
2013-06-03 19:13
流年226
Rank: 1
等 级:新手上路
帖 子:37
专家分:7
注 册:2013-4-27
得分:0 
竟然是少个else,我看了半天没找到,
十分感谢了
2013-06-03 22:33
流年226
Rank: 1
等 级:新手上路
帖 子:37
专家分:7
注 册:2013-4-27
得分:0 
回复 3楼 yuccn
那个问题是循环时少了个else
不是缓冲的问题,还是表示感谢了。
2013-06-03 22:35



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-414431-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.052443 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved