c语言递归重要吗?
递归函数提供了不一样的思维方式,用他来解决往往程序要短小很多,思维也会很清晰。它很适合解决树中的一些问题,在编译原理中也可以经常看到。
它的主要的解决问题的思维是这样的:
然后把复杂的问题归结为较简单的问题或把较大的问题分解为较小的问题。
下面这小段程序是用递归写的用来求1到n所有这些正整数的和的:
int f(int n){
if(n==1) return 1;
return n+f(n-1);
}
重要!C语言也好,C++也好,java也好,递归都是非常常用的算法,常见形式为定义一个函数,自己调用自己。为了避免无穷递归,需要在函数中标明递归的出口,比如使用递归求解1+2+3+...+n,需要编写当n=1时,返回1,否则返回n+sum(n-1)。递归在探索算法中有着广泛的应用,因此非常重要。
JAVA编程题递归遍历D盘下的所有文件夹和文件?
package eSystem;import j***a.io.File;public class Dir { public static void main(String[] args) { File d = new File("D:\\"); Dir (d); } public static void Dir(File dir) { if (dir.exists()) { for (File f : dir.listFiles()) { if (f.isDirectory()) { System.out.println("DIR: " + f.getName()); Dir(f); } else { System.out.println(" File: " + f.getName()); } } } }}
用j***a编写程序输出Fibonacci序列?
用j***a写用递归算法计算,并输出Fibonacci数列的前20项。
public class Fib_array {,public static void main(String[] args) {, int fib[] = new int[20];int i, n = 20;fib[0] = 0;fib[1] = 1 for (i = 2; i < fib.length; i++) fib[i] = fib[i - 1]+ fib[i - 2];for (i = 0; i < 5; i++)System.out.print(" " + fib[i]);System.out.println();for (i = 5; i < 10; i++)System.out.print(" " + fib[i]); System.out.println(); for (i = 10; i < 15; i++)System.out.print(" " + fib[i]);.out.println(); for (i = 15; i < 20; i++)System.out.print(" " + fib[i]);System.out.println();