首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

什么是递归?解决方案

2012-09-25 
什么是递归?int f(int x){int y, zz f(y)return (2*z)}这程序就叫递归吧,而且是死递归。# include st

什么是递归?
int f(int x)
{
  int y, z;
  z = f(y);
  return (2*z);
}

这程序就叫递归吧,而且是死递归。


# include <stdio.h>

void x(void)
{
printf("11\n");
  main();
}

int main(void)
{
  printf("22\n");
  x();


  return 0;
}

以上程序是肯定是死递归现象。但是这是递归吗? 
在调用一个函数的过程中又出现直接或间接地调用该函数本身,称为函数的递归调用。




[解决办法]
递归一定要有返回的条件
不能一直无休止的让它执行
[解决办法]
int f(int x)
{
int y, z;
z = f(y);
return (2*z);
}
这是递归,但没有设置跳出的语句,递归函数在调用它本身之前通常都设置一个判断语句,如if(condition) return value;来结束递归。

void x(void)
{
 printf("11\n");
main();
}
怎么在别的函数里调用主函数?
只能在主函数里调用其它的函数,而不能在任何函数中调用主函数
[解决办法]
递归是不断的调用自身的函数
[解决办法]
支持

探讨
“给定一个小点的输入,完整单步跟踪(同时按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史)一遍。”是理解递归函数工作原理的不二法门!
递归函数关注以下几个因素
·退出条件
·参数有哪些
·返回值是什么
·局部变量有哪些
·全局变量有哪些
·何时输出
·会不会导致堆栈溢出

热点排行