本程序使用递归,在输入任意的数字n(1~12),都可以计算出 2 + 22 + 222 + ...... + 222...222的结果。
其中测试用例有:
n = 1 , result = 2;
n = 2 , result = 24;
n = 3 , result = 246;
n = 4 , result = 2468;
n = 5 , result = 24690;
n = 6 , result = 246912;
......
n = 12 , result = 2100444372;
其中测试用例有:
n = 1 , result = 2;
n = 2 , result = 24;
n = 3 , result = 246;
n = 4 , result = 2468;
n = 5 , result = 24690;
n = 6 , result = 246912;
......
n = 12 , result = 2100444372;
但当 n = 13 , result = -470392734;超出了计算机的运算范围。
#include<stdio.h>
#include<stdlib.h>
int fun(int n);
int result(int n);
int main(void)
{
int flag = 1;
int n;
int sumresult;
while(flag)
{
system("cls");
printf("please input the number: ");
scanf("%d",&n);
sumresult = result(n);
printf("the result is %d\n",sumresult);
printf("Whether to continue testing, yes 1 no 0 : ") ;
scanf("%d" , &flag);
}
system("PAUSE");
return 0;
}
int result(int n)
{
int sum = 0;
for(int i = 1; i <= n ; i++)
{
sum = sum + fun(i);
}
return sum ;
// printf("the result is %d\n",sum);
}
int fun(int n)
{
int temp = 0;
if(n == 1)
{
temp = 2;
return temp;
}
else
{
temp = fun(n-1)*10+2;
return temp;
}
}