递归算法 简单的例子

题目:设计输出如下形式数值的算法,再把算法设计成递归结构算法。
1
22
333
4444
55555
.......
........
nnnnnnnnnnnnnn
普通算法                            
#include "stdio.h"
int bu(int n)
{
int i,j,k;
for(i=1;i<=n;i++)
{
for(j=1;j<=i;j++)
printf("%d",i);
printf("\n");
}
getch();
}
void main()
{
clrscr();
bu(8);

递归算法
#include "stdio.h"    
long int bu(int n)
{   long int y;
int i;
  if(n<1)
  { printf("error");
  return;
  }
  if(n==1)
    {
  printf("%d\n",n);
  return n;
  }
  else
  {
    y=bu(n-1);
  for(i=0;i<n;i++)
    printf("%d",y+1);
    printf("\n");
     return n;
    }
    }
    void main()
    {          clrscr();
      bu(8);
      }
二分法在有序数组中查找的递归运算。
普通算法

#include "stdio.h"
int serv(int x,int left,int right ,int w[])
{
  int mid ;
    while(left<=right)
   {
     mid=(left+right)/2;
     if(w[mid]==x) return mid;
      if(w[mid]<x)
     left=mid+1 ;
     else right= mid-1;
if(left>right) return -1;
     }
  }
void main()
{
int x=17;
int w[9]={2,5,7,9,11,13,17,22,24};
int left=0;
int right =sizeof(w)/2-1;
int t;
clrscr();
t=serv(x,left,right,w);
if(t==-1)  printf("wufazhaodao\n");
else printf("x zai w zhong %d\n",t);
}
递归算法
      #include "stdio.h"
int serch(int x,int left,int right,int w[])
{
  int mid;
if(left>right) return -1;
  mid =(left+right)/2;
  if(w[mid]==x) return mid;
  if(w[mid]<x)
  {
     left=mid+1 ;
    serch(x,left,right,w);
   }
else {  right= mid-1;
   serch(x,left,right,w);
     }
     }
void main()
{
  int x=17;
int w[8]={2,5,7,9,11,13,17,22};
int left=0;
int right =sizeof(w)/2-1;
int t;
t=serch(x,left,right,w);
if(t==-1)  printf("wufazhaodao\n");
else printf("x zai w zhong %d",t);

猜你喜欢

转载自20120923lina.iteye.com/blog/1692003