计蒜客 第19题:加一

来源:互联网 发布:家庭防火知多少作文 编辑:程序博客网 时间:2024/05/12 20:15
#include <iostream>using namespace std ;int add1(int A[] , int n){int len = n -1 ;    if( A[len] + 1!= 10  )   return ++A[len]; if( A[len] + 1!= 10 && len == 0 )   return ++A[len]; if( len == 0 && A[len] + 1 == 10 )  {     cout << "1" << " " ;     A[len] = 0 ;  } if (A[len]+1 == 10 ){ A[len] = 0 ; add1(A,len);}}int main(){int A[100000];int n;cin >> n ;for ( int i = 0 ; i < n ;++i)     cin >> A[i];add1(A,n);for ( int i = 0 ; i < n ;++i)      cout << A[i] << " ";cout << endl ;return 0 ;}

这道题 利用的递归的思想 但是递归终止的条件 却有三种:

一种是:不在len=0 的时候终止 ,此时A[len] = A[len] + 1 ;

第二种是: 在len = 0 且 A[len] + 1 != 10的时候 此时 ++A[len]

第三种:len = 0 A[len] + 1 = 10 这是 先输出一个 1 ,然后A[len] = 0 

在考虑的过程中 我是不断的试错 才找到所有的条件的 ,所以 考虑算法 或者项目时候 确实要做一个流程出来 

0 0