
谁能帮我讲讲此程序的求解过程呢?最终的解是多少呢?详细一点,谢谢!
#include<stdio.h>#include<stdlib.h>#defineNUM5intr(intn){inti;if(n<=NUM)returnn;for(i...
#include<stdio.h>
#include<stdlib.h>
#define NUM 5
int r(int n)
{
int i;
if(n<=NUM)
return n;
for(i=1;i<=NUM;i++)
if(r(n-i)<0)
return i;
return -1;
}
main()
{
int n=7;
printf("%d\n",r(n));
system("pause");
} 展开
#include<stdlib.h>
#define NUM 5
int r(int n)
{
int i;
if(n<=NUM)
return n;
for(i=1;i<=NUM;i++)
if(r(n-i)<0)
return i;
return -1;
}
main()
{
int n=7;
printf("%d\n",r(n));
system("pause");
} 展开
1个回答
展开全部
#include<stdio.h>
#include<stdlib.h>
#define NUM 5 //定义一个常数5
int r(int n) //定义一个函数名为r的函数
{
int i; //定义一个变量
if(n<=NUM) //用if语句对括号内的内容进行判断
return n; // 若if语句中的条件成立,返回一个数n
for(i=1;i<=NUM;i++) // for循环语句
if(r(n-i)<0) // if判断语句,递归的调用r()函数自身
return i; // 返回一个变量
return -1; //返回一个常数
}
main() //主函数
{
int n=7; //定义一个变量n,并对其赋值
printf("%d\n",r(n)); //输出一个数字,这个数字为调用函数r()后返回的结果
system("pause"); //程序暂停
}
最终的解为:1
#include<stdlib.h>
#define NUM 5 //定义一个常数5
int r(int n) //定义一个函数名为r的函数
{
int i; //定义一个变量
if(n<=NUM) //用if语句对括号内的内容进行判断
return n; // 若if语句中的条件成立,返回一个数n
for(i=1;i<=NUM;i++) // for循环语句
if(r(n-i)<0) // if判断语句,递归的调用r()函数自身
return i; // 返回一个变量
return -1; //返回一个常数
}
main() //主函数
{
int n=7; //定义一个变量n,并对其赋值
printf("%d\n",r(n)); //输出一个数字,这个数字为调用函数r()后返回的结果
system("pause"); //程序暂停
}
最终的解为:1
追问
为什么呢?
追答
程序中的r(7)在运行的时候不断的通过函数内的if语句判断条件是否成立。 我想你可能是这步:if(r(n-i)<0) 不太理解吧。这步相当于把n-1看做是一个新的n带入函数r()进行运算,把运算的结果拿来和0进行比较。如果还不理解的话可以设置断点调试程序。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询