| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 500 人关注过本帖
标题:关于数列
只看楼主 加入收藏
流年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
帖 子:6815
专家分:42393
注 册:2010-12-16
收藏
得分:2 
无法运行是什么情况?
 y=x(a-2)-2*x(a-1); 这样,对于15层递归,会运行很久的。性能上吃不消吧

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-03 18:39
yuccn
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:何方
等 级:版主
威 望:167
帖 子:6815
专家分: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];
}


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

我行我乐
公众号:逻辑客栈
我的博客:
https://blog.yuccn. net
2013-06-03 18:50
apull
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:三体星系
等 级:版主
威 望:216
帖 子:1506
专家分:9241
注 册: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
快速回复:关于数列
数据加载中...
 
   



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

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