(1)
问题及代码:
#include <iostream>
using namespace std;
void f(int);
int main()
{
int i=1234;
f(i);
return 0;
}
void f(int n)
{
if(n==0)
return;
else
{
f(n/10);
cout<<n%10;
return;
}
}
运行结果:
预计运行结果是:4321
实际运行结果是:1234
知识点总结:
关于递归函数,在某一次调用 f 函数是,并不是直接得到 f(n)的值,而是一次又一次地进行递归调用,到 最后一次调用时才有确定的值,然后再递推出函数的值,
所以最后的结果变成了和想象中完全相反的方向。
(2)
问题及代码:
#include <iostream>
using namespace std;
int sub(int);
int main()
{
int i=5;
cout<<sub(i)<<endl;
}
int sub(int n)
{
int a;
if (n==1)
return 1;
a=n+sub(n-1);
return a;
}
运行结果:
预计运行结果是:15
实际运行结果是:15
学习心得:
在读程序的时候,务必要用纸笔画出其中的调用过程,然后列出结果。务必要用到纸笔!!