青岛市新录用公务员:Pascal递归问题求解

来源:百度文库 编辑:高考问答 时间:2024/04/29 05:59:05
【问题描述】
我们要求找出具有下列性质数的个数(包含输入的自然数n):
先输入一个自然数n(n<=1000),然后对此自然数按照如下方法进行处理:
①不作任何处理;
②它的左边加上一个自然数,但该自然数不能超过原数的一半;
③加上数后,继续按此规则进行处理,直到不能再加自然数为止.
【样例】输入: 6
满足条件的数为 6 (此部分不必输出)
16
26
126
36
136
输出: 6

附:测试数据:
输入 输出
1 1
10 14
50 768
100 9828
198 195830

program l_1(input,output);
var
ans,n:longint;
procedure dfs(m:longint);
var
i:longint;
begin
inc(ans);
for i:=1 to m div 2 do dfs(i);
end;
begin
read(n);
dfs(n);
writeln(ans);
end.

很想做一下, 但说句实话, 没读懂

先判断输入数的位数,一位的话不作处理原样输出;

这道题我做过!可以参考大榕树中有类似程序!