关于间接递归

ttlyfast 2006-09-01 10:59:10
我写了一个递归程序

#include "stdio.h"
#include "conio.h"


int A(int x,int y)
{
printf("x+y=%d \n",(x+y)); //加上这句就出错说cpu遇到无效指令 晕!
C(x+=2,y-=3);
if((x+y)<-6000)
return (x+y);
if ((x+y)<10000)
B(x-=2,y-=5);
else return (x+y);
}
int B(int x,int y)
{
if ((x+y)<3000)
return C(x+=y,y-=3);
else
return A(x-=7,y+=5);
}

int C(int x,int y)
{
B(x+=2,y+=1);
if ((x+y)<5000)
B(x-=5,y+=x);
else
return A(x-=2,y-=3);

}


main()
{


printf("x+y=%d",A(5,6));
getch();
}

此程序在WinTc下编译通过 不过运行时总是转不出结果
我就在函数A里加了打印语句 来寻找原因 结果
在运行时出错 不知是什么原因?
请大家赐教!
...全文
168 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
yanluo129 2006-09-01
  • 打赏
  • 举报
回复
我编译了,可以运行,只是会出点错~VC++6.0
liliang800207 2006-09-01
  • 打赏
  • 举报
回复
(x+=2, y+=1)
会先加减 再调函数
liliang800207 2006-09-01
  • 打赏
  • 举报
回复
我在unix下调得 没有conio.h这个头文件
ttlyfast 2006-09-01
  • 打赏
  • 举报
回复
关键问题是为什么不论 在A,B,C哪个函数里加print语句都出错哪?
格兰特杨 2006-09-01
  • 打赏
  • 举报
回复
(x+=2, y+=1)

目的是把加过的值入栈还是加前的值入栈?
liliang800207 2006-09-01
  • 打赏
  • 举报
回复
printf("x+y=%d \n",(x+y)); /*加上这句就出错说cpu遇到无效指令 晕!*/
这样加注视
liliang800207 2006-09-01
  • 打赏
  • 举报
回复
好像是一个死循环,你还是把printf函数调一下吧
看一下日志
我看了一下程序,好像循环在A C之间了
你把限制循环的常量调小一点

69,371

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧