| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 304 人关注过本帖
标题:这个问题用直接递归怎么做?
只看楼主 加入收藏
yaobao
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:蒙面侠
威 望:4
帖 子:1854
专家分:4121
注 册:2012-10-25
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:5 
这个问题用直接递归怎么做?
求s=a+aa+aaa+aaaa+aa...a的值,其中a是一个数字。例如2+22+222+2222+22222(此时
    共有5个数相加),几个数相加有键盘控制。
这个问题我用间接递归做的。
但是用直接递归却没做出来,谁指点下怎么用直接调用做这道题啊。。。。


谢谢、。。。。
搜索更多相关主题的帖子: 键盘 
2012-11-15 15:11
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:5 
程序代码:
# include <stdio.h>
# include <stdlib.h>

unsigned long getsum(unsigned long a,int n)
{
    unsigned long result;
    if (n==1)
        result = a;
    else 
        result = a+getsum(a*10+2,n-1);
    return result;
}

int main(void)
{
    unsigned long a=2,result;
    int n;
    printf("请输入一个小于10的正整数:");
    while(scanf("%d",&n)==1 && n < 10 && n > 0)
    {
        result=getsum(a,n);
        printf("结果是:%10lu \n",result);
    }
   
    return 0;
}


[ 本帖最后由 heroinearth 于 2012-11-15 17:13 编辑 ]
2012-11-15 17:11
heroinearth
Rank: 10Rank: 10Rank: 10
来 自:云南曲靖
等 级:青峰侠
帖 子:430
专家分:1506
注 册:2011-10-24
收藏
得分:0 
另外写了一个:
程序代码:
# include <stdio.h>

unsigned long getsum(unsigned long a,int n,int i)
{
    unsigned long result;
    if (n==1)
    {
        result = a;
        printf("%lu",a);
    }
    else
    {
        printf("%lu+",a);
        result = a+getsum(a*10+i,n-1,i);
    }
    return result;
}

int main(void)
{
    unsigned long result;
    int n,a;
    printf("请输入一个小于10的正整数:");
    while(scanf("%d",&n)==1 && n < 10 && n > 0)
    {
        for(a=1;a<=9;a++)
        {
            result=getsum(a,n,a);
            printf("结果是:%lu\n",result);
        }
    }
    return 0;
}


[ 本帖最后由 heroinearth 于 2012-11-15 21:02 编辑 ]
2012-11-15 20:55
zxd543
Rank: 11Rank: 11Rank: 11Rank: 11
来 自:内蒙古
等 级:贵宾
威 望:17
帖 子:453
专家分:2351
注 册:2012-4-12
收藏
得分:5 
高中数列的一道课后题
n控制循环次数
a*(10的N次方 -1)/9
其实就是a*1 a*11 a*111 。。。。。
希望对你有帮助

马马虎虎 不吝赐教 我是路过蹭分滴
2012-11-15 21:11
wtw199186
Rank: 2
等 级:论坛游民
帖 子:55
专家分:78
注 册:2012-9-22
收藏
得分:5 
#include<iostream>
using namespace std;
int data(int a,int n)
{
    int s;
    int m=a;
    if(n==1)
        s=a;
    else
    {for(int i=2;i<=n;i++)
        m=m*10+a;
        s=data(a,n-1)+m;
    }
    return s;
}
int main()
{
    int a,n;
    cout<<"输入a,n:";
    cin>>a>>n;
    cout<<"结果为:"<<data(a,n)<<endl;
    return 0;
}
        
2012-11-16 18:16
一个孩子
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:5
帖 子:356
专家分:954
注 册:2012-10-1
收藏
得分:5 
学习了

重要的不是结果,是求一个结果的过程,哪怕千难万难,当你有想要的结果时,你已走的很远
2012-11-16 19:03
快速回复:这个问题用直接递归怎么做?
数据加载中...
 
   



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

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