字符串翻转
/**
* 将字符串翻转
*
* @param str
* @return
*/
public static String reverceString(String str) {
if (null == str || str.length() <= 1) {
return str;
}
return reverceString(str.substring(1)) + str.charAt(0);
}
计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
/**
* 使用递归操作
* 计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
* @param a
* @param n
* @return
*/
public static int sumOfMultis1(int a, int n) {
if (n == 1 || n == 0)
return getNum2(n) * a;
return sumOfMultis1(a, n - 1) + getNum2(n) * a;
}
public static int getNum2(int n) {
if (n == 1 || n == 0)
return getNum(n);
return getNum2(n - 1) + getNum(n);
}
public static int getNum(int n) {
if (n == 0)
return 0;
if (n == 1)
return 1;
return getNum(n - 1) * 10;
}
/**普通的计算【建议使用,nnd面试的时候非要让递归】
* 计算a+aa+aaa+……+aa…a(n个a)的值,n和a的值由键盘输入
*
* @param str
* @return
*/
public static int sumOfMultis(int a, int n) {
int a1 = a;
int sum = 0;
int i = 1;
while (i <= n) {
if (i != 1) {
a = (a * 10) + a1;
}
sum += a;
i++;
}
return sum;
}
分享到:
相关推荐
线性规划问题的可行解集合称为可行域,目标是在这个区域内找到最优解。 递归回溯法结合了分支和回溯的思想。分支是将大问题分解为多个子问题,而回溯则是当子问题无法满足约束时返回上一层继续探索其他分支。这种...
4. 对于每个未选择的元素(从当前索引到N-1),将其添加到选择集合,并递归调用函数,传入更新后的选择集合和下一个未选择元素的索引。 5. 在递归返回时,将当前元素从选择集合中移除,回溯到上一步。 非递归方法,...
### 递归求解 Fibonacci 数列 #### 一、引言 数列是数学中一个重要的概念,它是由一系列按照特定顺序排列的数字组成的集合。数列的研究在数学的各个分支中都扮演着重要的角色,从代数到微积分,再到更高级的数学...
在编程领域,数组和递归是两种非常基础且重要的概念。数组是一种数据结构,用于存储同类型元素的集合,可以通过索引来...通过理解和实践这样的问题,可以提高对数组操作和递归的理解,对进行复杂问题的求解大有裨益。
基本情况是问题的最简单形式,可以直接求解,而递归情况则会继续调用自身以解决更复杂的情况。 在描述的示例中,我们处理的是TreeView控件,它通常用于展示层级关系的数据,如文件系统目录结构。每个TreeNode代表一...
1053 - Set Me可能涉及到集合的运算,可以通过递归或分治策略求解集合的交集、并集、差集等。1045 - Bode Plot则可能与信号处理相关,可能需要利用分治的思想处理复杂的信号分析问题。 1010 - STAMPS问题可能是一个...
基础情况是能够直接求解的情况,无需再进行递归调用;而递归情况则是将问题规模缩小并调用自身来解决。 1. **阶乘计算**:递归在计算阶乘时非常直观。例如,`n! = n * (n-1)!`,当n为1时,阶乘的基础情况成立,因为...
递归算法是一种非常有效的方法来解决组合问题,其基本思想是将一个复杂的问题分解成若干个相同或相似的子问题,直到这些子问题变得简单到可以直接求解为止。 #### 核心知识点解析 根据提供的标题、描述和部分内容...
- 分治是一种解决问题的算法设计策略,它将大问题分解为相互独立的子问题,然后对每个子问题递归求解,最后合并结果。 - 应用场景包括排序算法(如快速排序、归并排序)、查找问题(如二分查找)等。 4. **解决...
这种方法利用了递归的特性,不断地分解问题直至达到最简单的基本情况,然后再逐步回溯求解。 **具体步骤:** 1. **基本情况:** 如果集合中只有一个元素,那么该元素本身就是一种排列。 2. **递归过程:** - 选择...
迭代通常涉及对数组、集合或数据结构的遍历,或者进行数学计算直到满足停止条件。例如,在迭代法求平方根的文档中,可能详细介绍了如何通过不断逼近目标值来计算一个数的平方根。这种方法简单直观,易于理解和实现,...
在这段代码中,`p`函数负责递归求解全排列,`print_result`函数用于打印结果,而`swap`宏则用于交换数组中的两个元素。在`main`函数中,初始化了一个整型数组`array`,并计算其长度,然后调用`p`函数开始递归求解...
本实验报告主要探讨了三种使用递归策略的算法:Ackerman函数实现、大数划分以及数据集合的排列组合。 1. **Ackerman函数实现** Ackerman函数是一个经典的双递归函数,其定义如下: - 当n=1且m=0时,A(n, m)=2。 ...
在递归求解全排列的过程中,我们通常遵循以下步骤: 1. **基础情况**:当需要排列的元素只剩下一个时,那么这个元素就是唯一的一种排列,返回它。 2. **递归步骤**:对于每个剩余的元素,将其放在当前已排序序列的...
可以参考书上介绍的同步记号集合来处理。 可能的出错情况:idid*id, id**id, (id+id, +id*+id …… 4. 输入串以#结尾,输出推导过程中使用到的产生式。例如: 输入:id+id*id# 输出:E ® TE ¢ T ® FT ¢ F ...
数独是一种广受欢迎的逻辑推理游戏,其基本规则是通过填...理解这些知识点后,你可以阅读源代码,进一步了解作者是如何实现递归求解数独的具体步骤。通过调试和分析代码,你将能深入掌握数独求解的逻辑和C++编程技巧。
3. 这个过程需要多次迭代,直到First集合不再变化为止,因为可能存在递归推导的情况。 例如,对于文法G=(V, Σ, R, S),其中V是非终结符集,Σ是终结符集,R是产生规则集,S是起始符号,我们可以用以下方式求解...
在求解集合子集问题时,我们可以使用递归的方式: 1. 基本情况:当集合为空时,返回一个空集作为子集。 2. 递归情况:对于非空集合,我们有两种选择:包含当前元素或不包含。对于每个选择,我们都将其应用于剩余的...
本书分为四个部分:第一部分讨论适合大多数应用的集合类API的一个子集,并覆盖基本的算法分析技术、递归和排序算法;第二部分包含了一组集合类API的应用实例;第三部分讨论数据结构的实现;第四部分描述了高级的数据...
实验二 用动态规划法求解0/1背包问题 实验三 用贪心算法求解Prim算法 实验四 用回溯法求解N后问题 实验五 用分支限界法实现旅行售货员问题 这些实验的大部分源代码都是书上的, 我用的是WindowsXP SP2 VisualC++6.0...