p1130-递归与递推

描述 Description  

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

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

l·不作任何处理:

2·茬它的左边加上一个自然数,但该自然数不能超过原数的一半;

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

 

样例输入: 6

       满足条件的数为 6 (此部分不必输出)

             16

             26

             126

             36

             136

 

输出: 6

 

 

输入格式 Input Format 

自然数

  

  

输出格式 Output Format 

满足条件的数的个数 

  

样例输入 Sample Input  

6

  

样例输出 Sample Output  

6

 

 

递推代码:

 

代码
var i,j,k,n:longint; 
    a:
array[0..1001of longint; 
begin 
assign(input,
'input.txt'); reset(input);
assign(output,
'output.txt'); rewrite(output);
readln(n); 

for i:=1 to n do a[i]:=1{ 本身有一个数}

for i:=1 to n do           {每个数的值都应该是1...n div 2的和}
    
for j:=1 to i div 2 do 
    a[i]:
=a[i]+a[j]; 

    writeln(a[n]);
  close(input); close(output);    
end
 
 
递归代码:
代码
var all,n:longint;
procedure search(m:longint);{在数据M左边添加数据}
var i,j:integer;
begin
  all:
=all+1;
  
for i:= m div 2 downto 1 do search(i);
end;

begin
assign(input,
'input.txt'); reset(input);
assign(output,
'output.txt'); rewrite(output);
readln(n);
all:
=0;
search(n);
writeln(all);
  close(input); close(output);
end.

 

 

 

posted @ 2010-04-08 10:08  jesonpeng  阅读(146)  评论(0编辑  收藏  举报