c语言,递归调用汉诺塔问题,输入负数依然出结果
程序如下:
#include
int ff(int n)
{
int f;
if (n<0)
printf("dataerror");
else if (n==0||n==1)
f=1;
else f=n*ff(n-1);
return(f);
}
void main()
{
int y;
int n;
printf("please input a number:");
scanf("%d",&n);
printf(" ");
y=ff(n);
printf("%d!=%d",n,y);
printf(" ");
}
输入-3,输出为please input a number:-3
dataerror-3!=-1217363980。
请问有人解决这个问题了吗,交流下
输入负数,子函数虽然没有递归调用了,但是在子函数中为 变量 f 分配了内存,依旧能够返回 f 的值,而且这个值是不确定的,这种行为也可以称为未定义的行为。
要想输入负数,终止程序,在子函数中改动
if(n<0){
printf("dataerror ");
exit(1);
}
问:怎样学习C语言的函数,递归\函数间调用,主要是理解这些概念
答:可以去参考谭浩强编著的,里面递归解释的很清楚.有汉诺塔的详解.详情>>
问:C语言C语言为了准备三级网络技术上机考试,c语言至少要看到那一章节?
答:数据类型、输入输出、选择语句、循环语句、数组、指针、函数、文件详情>>
答:网上买2手的也就几块钱而已详情>>