递归

来源:互联网 发布:站内搜索数据库 编辑:程序博客网 时间:2024/06/14 17:56
本程序使用递归,在输入任意的数字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 = 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;}}


1 0