A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 青菜白汤 中级黑马   /  2014-6-11 09:59  /  1376 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 青菜白汤 于 2014-6-17 15:54 编辑

  • 题目如下:用递归算法求解数字塔问题
    1. public static String tourData(int n) {  
    2.         String str = new String();  
    3.         if(1 == n) {  
    4.             str = rowData(n) + "\n";  
    5.             return str;  
    6.         }  
    7.         else {  
    8.             str = tourData(n-1) + rowData(n) + "\n";  
    9.         }  
    10.         return str;  
    11.     }  
    12.     private static String rowData(int n) {  
    13.         String str = new String();  
    14.         for(int i=0; i<n; i++) {  
    15.             str = str+ n + "      ";  
    16.         }  
    17.         return str;  
    18.     }  
    复制代码
    想问一下,tourData()方法中的 n 是如何自增的,我们既没有定义自增,它是如何跟随 rowData()的 n 自增的呢?


评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

5 个回复

倒序浏览
你懂递归吗?这完全是递归的标准式,递归中的N是下移自减中在调下一个函数的不是自加的!下一个函数在自减调下一个函数
xx{
xx(i-1)
{
  xx(i-2)
{
xx(i-3)
{
......  一直到i=0或1的时候结束! 在返过来向上一层一层的执行!

}
}
}
}

评分

参与人数 1技术分 +1 收起 理由
czwanglei + 1

查看全部评分

回复 使用道具 举报
它一直调的都是自己本身这个函数 最后你说是先从中间括号里的先执行还是外面的大括号的先执行?跟数学优先级一样的
回复 使用道具 举报
马林雷 发表于 2014-6-11 17:04
你懂递归吗?这完全是递归的标准式,递归中的N是下移自减中在调下一个函数的不是自加的!下一个函数在自减 ...

递归不是很懂,意思说递归是先自减自调,再反过来执行
回复 使用道具 举报
青菜白汤 发表于 2014-6-12 02:59
递归不是很懂,意思说递归是先自减自调,再反过来执行

是的反过来从N=1开始向上一层一层的执行 这时候n就是你问的如何它是如何跟随 rowData()的 n 自增,因为有n-1个函数
回复 使用道具 举报
到底都是学过的。。。支持下吧
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马