小编Rah*_*rup的帖子

如何以递归方式思考?

为了理解贪婪方法和动态编程等高级算法概念,首先需要精通递归.

我对递归比较新.每当提出问题时,首先要记住的是使用迭代的解决方案.即使我知道递归方法的含义及其工作方式,但很难以递归方式进行思考.

请回答以下问题,以帮助解决问题:

1)任何迭代方法都可以用递归代替,反之亦然吗?

例如,如何以递归方式打印大小为n的数组中的元素?

for i 0 to n
 Print a[i]
Run Code Online (Sandbox Code Playgroud)

2)如何递归地解决问题?步骤是什么?是否有任何提示可以确定问题可以递归解决?

例如:如果要求打印出字符串的所有子字符串

INPUT: CAT
OUTPUT: CAT,CA,A,AT,T
Run Code Online (Sandbox Code Playgroud)

我可以快速提出迭代方法.使用两个循环可以解决问题.

但递归地如何解决它.如何识别问题可以递归解决.

如果回答我的第一个问题是肯定的,使用两次递归而不是迭代可以解决我的问题?

3)任何人都可以建议我一些材料/资源来彻底理解递归的概念吗?

string iteration algorithm recursion tail-recursion

12
推荐指数
3
解决办法
8008
查看次数

public <T> void run(T object){}是什么意思?

我正在阅读泛型,并尝试编写以下代码.没有编译错误.

import java.util.*;

public class JavaApplication14 {

    public<T>  void run (T obj ) {
        //Do Something
    }

  public static void main(String[] args) {     
      JavaApplication14  m= new JavaApplication14();
      m.run(new ArrayList<>());  
      m.run(new Interger(5);
      m.run(5);
     }
}
Run Code Online (Sandbox Code Playgroud)

如果功能是

 public<T extends Number>  void run (T obj) {
            //Do Something
        }
Run Code Online (Sandbox Code Playgroud)

这是有道理的,因为我们可以将此函数的参数限制为Number及其子类型.但非常混淆功能"运行"没有任何约束意味着什么?它现在可以将任何对象作为参数吗?在什么情况下我需要使用泛型这样的函数?

java generics

7
推荐指数
1
解决办法
3036
查看次数

何时实现Comparable <超类X>而不是Comparable <X>?

class A { ... }


class B extends A implements Comparable<A> {
    int compareTo(A aobject) { ... }
}
Run Code Online (Sandbox Code Playgroud)

通常我们Comparable使用类型参数实现B.但是java允许使用超类.

有没有我真的需要做这样的事情?

java generics

5
推荐指数
1
解决办法
155
查看次数

为什么finalize()只被垃圾收集器调用一次?

SCJP 6学习指南引用:

在该finalize()方法中,您可以编写将对相关对象的引用传递回另一个对象的代码,从而有效地使对象无法进行垃圾回收.如果稍后在同一个对象上再次符合垃圾回收条件,垃圾收集器仍然可以处理该对象并将其删除.但是,垃圾收集器会记住,对于此对象,finalize()已经运行,并且它不会finalize()再次运行

它为什么这么设计?finalize()即使第二次将对象标记为集合时,该方法的目的仍然保持良好.那为什么Java决定跳过调用finalize()

java garbage-collection finalize

5
推荐指数
1
解决办法
1445
查看次数

弱连接图?

维基百科页面

“如果将所有有向边替换为无向边,则产生一个连通(无向)图,则称为有向图”

这个准确吗?

在此处输入图片说明

上面的图形是在所有有向边都替换为无向边的情况​​下连接的,但是B到D或D到B之间没有路径违反了弱类型属性。

algorithm graph

3
推荐指数
1
解决办法
8899
查看次数