问题思考:不用递归,写出快速求幂的程序。
public class Test4 {
public static void main(String[] args) {
System.out.println(mutil(5, 11));
System.out.println(fortil(1233, 12));
}
//递归方法
private static long mutil(long n, int x) {
if (x == 0) {
return 1;
} else {
return n * mutil(n, x - 1);
}
}
//非递归方法
private static int fortil(long n, int x) {
if (x == 0) {
return 1;
} else {
int sum = 1;
for (int i = 0; i < x; i++) {
sum *= n;
}
return sum;
}
}
}
导致递归的四个基本法则:
1、基本情况。必须总要有某些基准的情况,它们不用递归就能求解。
2、不断推进。对于那些要递归求解的情况,递归调用必须总能够朝着一个基准情形推进。
3、设计法则。假设所有的递归调用都能运行。
4、合法效益法则。在求解一个问题的同一实例时,切勿在不同的递归调用中做重复性的工作。
分享到:
相关推荐
关于递归的误区:深入解析递归的时间复杂度与优化策略 在计算机科学领域,递归是一种常见的算法设计技巧,其基本思想是将问题分解为更小的子问题,直至达到可以直接解决的基本情况,然后逐步返回求解原问题。递归因...
关于递归算法时间复杂度分析的探讨,是一个深入理解算法效率和优化的关键议题。递归,作为解决问题的一种强大工具,其本质是将复杂问题分解为更简单的子问题,通过求解这些子问题来达到最终解决方案的目的。然而,...
关于递归教学的探讨 递归是计算机科学中一种核心的程序设计技术,它涉及到函数或过程在其执行过程中调用自身的过程。递归在程序设计基础、数据结构和算法设计等课程中扮演着重要角色,但也是教学上的难点。递归教学...
递归优化(使用缓存) 递归是 Python 中的一种重要编程技术,但是其缺陷之一是计算速度慢。优化递归是提高计算效率的重要步骤,本文将讨论使用缓存来优化递归的方案。 递归的优化思路 ---------------- 递归的...
在计算机科学中,递归是一种强大的编程概念,它涉及到函数或过程在其定义中调用自身。递归在解决复杂问题时特别有用,因为它允许将大问题分解为更小的相似子问题,直到达到基本情况,然后逐步合并解决方案。本文将...
x=fib(n-1)+fib(n-2);
关于递归操作,相信大家都已经不陌生。简单地说,一个函数直接或间接地调用自身,是为直接或间接递归。例如,我们可以使用递归来计算一个单向链表的长度: 代码如下: public class Node { public Node(int value,...
c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘 n!c++ 递归 阶乘...
汉诺塔问题是一个经典的计算机科学问题,源自印度的古老传说,它涉及到三个柱子和一堆大小...以上就是关于“C++递归实现汉诺塔问题”的详细解析,它涵盖了递归算法设计的基本概念、实例代码以及相关的计算机科学知识。
递归互斥信号量.zip"这个压缩包中,包含的源代码很可能是FreeRTOS中关于递归互斥信号量的示例应用。通过分析这些源码,我们可以学习如何创建、获取和释放递归互斥信号量,以及如何在实际项目中正确使用它们。 创建...
《递归九讲2021 7-9》是一个关于递归算法的专题学习资料,涵盖了递归在解决各种问题中的应用,包括二叉树类问题和排列类问题。通过对递归的理解和掌握,我们可以解决更复杂的问题,提高编程效率。本资料包括三章互动...
文件列表中有一个名为 "2010级软件工程2班2010416495刘士强(实验三)实验报告.doc" 的文档,这很可能是刘士强同学完成的关于递归下降分析的实验报告,里面可能包含了他对递归下降分析方法的理论理解和实际操作步骤...
根据给定文件的信息,我们可以总结出以下关于递归与分治技术的重要知识点: ### 一、递归的基本概念 #### 定义: 递归是一种在程序设计中非常重要的方法,它指的是在一个函数或过程中直接或间接地调用自身来解决...
以下是关于递归表达式计算器的一些关键知识点: 1. **递归的基本概念**:递归是一种解决问题的方法,它将问题分解为更小的子问题,直到子问题可以直接解答。在计算表达式时,递归通常用于处理如括号嵌套、函数调用...
标题提到的"递归Recursion)1"可能是指一个关于递归的系列教程或讨论的第一个部分,重点是介绍递归的基本概念和QL中的应用。 描述中提到了一个使用递归谓词`getANumber()`的例子,这个谓词用于生成0到100之间的所有...
"www.pudn.com.txt"可能是一个文档,提供了关于递归算法的详细资料,可能包括递归的基本概念、递归函数的定义、递归的特性以及如何设计递归算法等。在递归算法中,通常有一个或多个基本情况(base cases),这些是不...
文件`www.pudn.com.txt`可能是一个文档,提供了关于递归概念的进一步解释,或者是项目的说明或者代码注释。 在VC++中实现递归,你需要确保以下几点: 1. **正确设定基础情况**:递归函数必须有一个明确的基础情况...
递归算法是计算机科学中的一个重要概念,它是一种解决问题的方法,其中函数或过程调用...以上是关于递归算法的一些基本知识和应用场景。通过深入学习和实践,你可以更好地掌握递归算法,并将其运用到各种实际问题中。
**标题解析:**"recursion-see-recursion:关于递归和垃圾的演讲幻灯片",这个标题表明了主题是关于编程中的递归概念,同时可能涉及到了内存管理,特别是“垃圾”的提及,可能指的是JavaScript环境中的垃圾回收机制。...
从提供的压缩包文件名来看,它们可能包含了关于递归和分治策略的详细讲解,如"递归与分治.ppt",以及可能的实例分析。通过学习这些材料,你可以更深入地理解递归在C/C++中的应用和实践。 总之,掌握递归是提升编程...