【递归】加数字

要求找出具有下列性质的数的个数(包含输入的自然数n):

先输入一个自然数n(n<=500),然后对此自然数按照如下方法进行处理:

1.不作任何处理;

2.在它的左边加上一个自然数,但该自然数不能超过原数首位数字的一半;

3. 加上数后,继续按此规则进行处理,直到不能再加自然数为止.

输入一个整数n输出一个整数,即满足条件的数的个数样例输入

6

样例输出

6

提示如输入6,则有
16
26
126
36
136


#include <cstdio>
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
int n,cnt=1;
void init(int &n) 
{
  while (n/10)
  {
    n /= 10;
  }
}
void f(int x)
{
    for(int i=1;i<=x/2;i++){
        cnt++;
        f(i);
    }
}
int main()
{
  int n = 0;
  cin >> n;
  init(n);
    f(n);
    printf("%d\n",cnt);
}

 

 

点赞

发表评论

电子邮件地址不会被公开。必填项已用 * 标注

5 × 5 =