注册 登录
编程论坛 C++教室

关于 C++ 递归函数的回溯是怎么回事,刚学,弄不明白啊

lumia610 发布于 2014-05-09 21:47, 618 次点击
#include<iostream>
#include<math.h>
using namespace std;
int main()
{
    int n;
    void f(int n);
    while(cin>>n)
    {
        f(n);
    return 0;
}
}
void f(int n)//书上说先递归的求n/10的个位数字,再求个位数字n的个位数字并输出,输出操作是在回溯是完成的,这句话是怎么理解啊????
{
    if(n<10)
        cout<<n<<" ";
    else
    {
        
        f(n/10);
        cout<<n%10<<" ";
    }
}
2 回复
#2
未未来2014-05-10 00:20
比如一个三位数123
进入函数 f
第一层 :这时候 123>10
所以 进入f(n/10)  即 f(12)
cout<<123%10<<" ";
是在退出或者说执行完f(12)之后在进行的  标记为事件1
第二层进入了 f(12) 12>10
所以又进入了f(12/10)  即 f(1)
而本应该
cout<<12%10<<""
又是在退出或者说执行完f(1)之后进行的, 标记为事件2
第三层 进入f(1) 1<10
所以直接输出
cout<<1<<" ";
然后退出f(1),执行事件2,然后再执行事件1

书上讲递归的时候应该是用栈来讲的吧 更加直观形象 ,可以去看看
#3
funyh2502014-05-10 08:13
上面的好专业~

我来个通俗易懂
{
   if(n<10)
        cout<<n<<" ";
    else
    {
        
        f(n/10);
        cout<<n%10<<" ";     (若n>10,则除以10, 除以10之后的结果还是大于10,(回归本身)继续除10。 以此递推。。。  故称“递归”)
   这就是我的理解  
1