我正在学习递归,在解决正整数 a 除以正整数 b 时的余数计算问题时遇到了概念上的疑问。
我的代码是:
#include<stdio.h>
#include<stdlib.h>
int x;
int rem(int a,int b)
{
x=a;
if(x>=b)
{
x=x-b;
rem(x,b);
}
printf("%d\n",x);
return x;
}
int main()
{
int a,b;
printf("Enter a & b\n");
scanf("%d %d",&a,&b);
int y =rem(a,b);
printf("rem is :%d",y);
return 0;
}
它工作正常。我了解到,每次调用都会创建一组新的形式参数和局部变量。
所以我通过在每次递归调用返回时打印 x 来进行实验!但是它正在打印 1 1 1 1。为什么没有打印对应于特定调用的 x 值。?
为什么只打印最后修改的值?..是因为我将“x”声明为全局的吗?