注册 登录
编程论坛 C语言论坛

输入整数n和a,输出S=a+aa+aaa+……+aa…a(n个a)的结果。(要求用递归函数实现)

追梦人(婧) 发布于 2019-09-19 20:46, 4697 次点击
输入整数n和a,输出S=a+aa+aaa+……+aa…a(n个a)的结果。(要求用递归函数实现)
6 回复
#2
niuniuchiniu2019-09-20 01:23
#include<stdio.h>
#include<stdlib.h>
#include<math.h>

int sum(int a, int n)
{
    if (n== 1)
    {
        return a;
    }
    else
    {
        return sum(a,n-1)+pow(a,n);
    }
}

void main()
{
    int a, n;

    printf("please input two integer");//没有对输入进行判断.

    scanf_s("%d%d", &a, &n);


    int c = sum(a, n);
    printf("%d", c);

    system("pause");
}
#3
rjsp2019-09-20 08:51
为什么要用递归?除非迫不得已,否则不应该偷懒

程序代码:
#include <stdio.h>

static void PrintSum_( unsigned a, unsigned n, unsigned carry )
{
    if( n == 0 )
    {
        if( carry != 0 )
            printf( "%u", carry );
        return;
    }

    PrintSum_( a, n-1, (a*n+carry)/10 );
    putchar( (a*n+carry)%10 + '0' );
}

void PrintSum( unsigned a, unsigned n )
{
    // 如果 a==0 或 n==0 输出 0
   
// 如果 a>9 或 n过大 报错
   
// 以上略

    PrintSum_( a, n, 0 );
    putchar( '\n' );
}

int main( void )
{
    PrintSum( 1, 1 ); // 1
    PrintSum( 1, 2 ); // 12

    PrintSum( 9, 1 ); // 9
    PrintSum( 9, 2 ); // 108
    PrintSum( 9, 3 ); // 107

    PrintSum( 9, 99 ); // 1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111011
}

#4
自学的数学2019-09-20 09:40
程序代码:
#include <stdio.h>  

 main()
{
    int a, n;
    long f, s;
    int i;
    printf("请输入a、n(以空格分隔):");
    scanf("%d%d", &a, &n);
     f = s = 0;
    for(i=0; i<n; i++)
    {
        f = f * 10 + a;
        s += f;
    }
    printf("a + aa + aaa + ... aa..a = %ld\n", s);
}
#5
wmf20142019-09-20 10:14
int sum(int a, int n)
{
    if (!n)return 0;
    return sum(a * 10 + a%10, n - 1)+a;
}
int main()
{
    printf("%d\n", sum(3, 5));
    return 0;
}
#6
沈和2019-09-20 19:24
程序代码:

#include <stdio.h>
#include <stdlib.h>

unsigned sa(unsigned a, unsigned n) {
    if (!n) {
        fputs("It makes no sense when n is 0\n", stderr);
        exit(1);
    }
    if (1 == n)
        return a;
    else
        return a + sa(a * 10 + a % 10, n - 1);
}

int main(void) {
    printf("7 + 77 + 777 + 7777 = %d\n", sa(7, 4));
    sa(9, 0);
    return 0;
}


[此贴子已经被作者于2019-9-21 13:01编辑过]

#7
程序猿19882019-09-24 13:47
#include"stdio.h"
int main()
{
    int i,sum=0,n,a;
    scanf("%d%d",&a,&n);
    int   b=a;
    for(i=1;i<=n;i++)
    {   
        sum+=a;
        a=a*10+b;
    }
    printf("sum=%d\n",sum);
    return 0;
}
1