您的位置:首页 > 其它

利用递归解决一些问题

2017-05-16 18:33 323 查看
//利用递归解决n的阶乘问题

int Fac(int n)

{

 int tmp = 1 ;

 if (n==1 || n==0)

 {

  return 1 ;

 }

 tmp = n * Fac(n - 1) ;

 return tmp ;

}

//利用递归解决sum求和问题

int Sum(int n)

{

 int tmp = 0 ;

 if (n == 0)

 {

  return 0;

 }

 tmp = n +Sum(n - 1) ;

 return tmp ;

}

//利用递归解决汉诺塔问题

void Move(char x, char y)

{

 printf("%c -> %c\n", x, y);

}
void Hanio(int n, char a, char b, char c)

{

 if (n == 1)

 {

   Move(a, c);

 }

 else

 {

  Hanio(n-1 , a, c ,b);

  Move(a, c);

  Hanio(n-1, b, a, c);

 }

}

//利用递归结局斐波纳契数列问题(其实不建议用递归)

int Fabion(int n)

{

 if (n==0 || n==1)

 {

  return 1;

 }

 int tmp = Fabion(n-1) + Fabion(n-2) ;

 return tmp;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: