| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 618 人关注过本帖
标题:关于 C++ 递归函数的回溯是怎么回事,刚学,弄不明白啊
只看楼主 加入收藏
lumia610
Rank: 1
等 级:新手上路
帖 子:11
专家分:2
注 册:2012-11-27
结帖率:33.33%
收藏
已结贴  问题点数:10 回复次数:2 
关于 C++ 递归函数的回溯是怎么回事,刚学,弄不明白啊
#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<<" ";
    }
}
搜索更多相关主题的帖子: include return 
2014-05-09 21:47
未未来
Rank: 3Rank: 3
等 级:论坛游侠
威 望:1
帖 子:182
专家分:157
注 册:2012-11-6
收藏
得分:5 
比如一个三位数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

书上讲递归的时候应该是用栈来讲的吧 更加直观形象 ,可以去看看
2014-05-10 00:20
funyh250
Rank: 10Rank: 10Rank: 10
等 级:贵宾
威 望:26
帖 子:290
专家分:1573
注 册:2013-12-25
收藏
得分:5 
上面的好专业~

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

学习是大事   吃喝拉撒睡是小事   其他的那都不是事
2014-05-10 08:13
快速回复:关于 C++ 递归函数的回溯是怎么回事,刚学,弄不明白啊
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.034431 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved