递归
来源:互联网 发布:站内搜索数据库 编辑:程序博客网 时间: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 = 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