递归思路分解(C#)
例子一:求1!+2!+......+X!
思路分解:因为是用递归思想解决问题,也就是方法调用方法。那么肯定的方法是重复利用的。在这道题里,我们要重复利用的也就是求X!和求和
所以我们先把求X!的代码写出来:
//x!计算
static int Factorial(int intValue)
{
int factorial = 1;
for(int i=1;i<=intValue;i++)
{
factorial *= i;
}
return factorial;
}
然后就是重复使用上面的Factorial()方法计算总和
代码如下:
//求阶层和
static int FactorialSum(int num)
{
if (num <= 1)
return 1;
return Factorial(num) + FactorialSum(--num);
}
当num=3的时候(为了方便分解,选一个小点的数字),程序是这样走的:
static void Main(string[] args)
{
int sum = FactorialSum(3);
Console.WriteLine(sum);
Console.ReadKey(); }
第一次迭代:return Factorial(3)+FactorialSum(2);
第二次迭代:return Factorial(3)+ [return Factorial(2)+FactorialSum(1)];
第三次迭代:return Factorial(3)+ [return Factorial(2)]+ [return 1];
每次return返回的都是int类型的数,所以最后结果就是总和。
注意:代码里的FactorialSum(--num)比如是--num,不能是num++,否则永远也跳不出循环。
例子二:一长度为X的竹竿每天减去一半,问第N天之后的长度是多少
思路:需要重复用的方法就是X/2,所以一个方法应该就能搞定
代码如下:
static double GetLength(double length,int days) //days为第几天,length为竹子的长度
{
if(days<=1)
{
return length / 2;
}
else
{
return GetLength(length / 2, --days);
}
}
以上都是个人思想,如有什么不严谨不妥之处,还望提出来emojo
递归思路分解(C#)的更多相关文章
- 剑指Offer——全排列递归思路
剑指Offer--全排列递归思路 前言 全排列,full permutation, 可以利用二叉树的遍历实现.二叉树的递归遍历,前中后都简洁的难以置信,但是都有一个共同特点,那就是一个函数里包含两次自 ...
- LeetCode 856 递归思路详解
题目描述 给定一个平衡括号字符串 S,按下述规则计算该字符串的分数: () 得 1 分. AB 得 A + B 分,其中 A 和 B 是平衡括号字符串. (A) 得 2 * A 分,其中 A 是平衡括 ...
- Idea 02.暴力递归与动态规划(1)
1,关键词解释 1.1 暴力递归: 1, 把问题转化为规模缩小了的同类问题的子问题 2, 有明确的不需要继续进行递归的条件(base case) 3, 有当得到了子问题的结果之后的决策过程 4, 不记 ...
- 递归-归并排序 思想 JAVA实现
已知一个数组 15.58.61.75.21.32.89.4.78.83.采用递归实现的归并排序将数组有序. 分治策略:(摘自<算法导论>) 在分治策略中,我们采用递归解决问题 分解:将 ...
- 【数据结构与算法Python版学习笔记】递归(Recursion)——定义及应用:分形树、谢尔宾斯基三角、汉诺塔、迷宫
定义 递归是一种解决问题的方法,它把一个问题分解为越来越小的子问题,直到问题的规模小到可以被很简单直接解决. 通常为了达到分解问题的效果,递归过程中要引入一个调用自身的函数. 举例 数列求和 def ...
- [RxJava^Android]项目经验分享 --- 递归实现
介绍一下业务逻辑:获取接口数据,根据接口内容判断是否需要继续获取数据. 本文使用递归思路,通过RxJava来实现此功能,获取数据的Observable直接用模拟的Observable.just()替代 ...
- 【hiho一下第77周】递归-减而治之 (MS面试题:Koch Snowflake)
本题是一道微软面试题,看起来复杂,解出来会发现其实是一个很简单的递归问题,但是这道题的递归思路是很值得我们反复推敲的. 原题为hihocoder第77周的题目. 描述 Koch Snowflake i ...
- 【HDU - 4344】Mark the Rope(大整数分解)
BUPT2017 wintertraining(15) #8E 题意 长度为n(\(n<2^{63}\))的绳子,每隔长度L(1<L<n)做一次标记,标记值就是L,L是n的约数. 每 ...
- ZT 二叉树的非递归遍历
ZT 二叉树的非递归遍历 二叉树的非递归遍历 二叉树是一种非常重要的数据结构,很多其它数据结构都是基于二叉树的基础演变而来的.对于二叉树,有前序.中序以及后序三种遍历方法.因为树的定义本身就 是递归定 ...
随机推荐
- HubbleDotNet全文搜索数据库组件(二)
[摘要]本文介绍如何使用HubbleDotNet实现基本的全文搜索,包括建立搜索数据库.数据表.建立索引,压缩索引和搜索示例等内容. 上文介绍了HubbleDotNet的安装,接下来介绍如何使用Hub ...
- 处理动态SQL语句的参数
原文:处理动态SQL语句的参数 经常对SQL进行开发,写动态的SQL语句,是少之不了的,但是在使用动态语句中,常是因为有动态的参数的出现.参考下面代码示例: 正因为有了标记1的动态条件代码,而让SQL ...
- {{angular.js 使用技巧}} - 实现计算列属性
前端MV*框架现在有很多,其中某些框架有计算列(又叫监控属性),比如:微软推荐的 Knockout.js 和博客园司徒正美的 avalon.js 框架. 本人只使用过 Knockout.js,aval ...
- js 设为首页、加入收藏
// 加入收藏 <a onclick="AddFavorite(window.location,document.title)">加入收藏</a>func ...
- 迷你 MVC
深入研究 蒋金楠(Artech)老师的 MiniMvc(迷你 MVC),看看 MVC 内部到底是如何运行的 2014-04-05 13:52 by 自由的生活, 645 阅读, 2 评论, 收藏, 编 ...
- EF Power Tools 参数错误 HRESULT:0x80070057 (E_INVALIDARG))
数据库名称使用数字开头,使用EF Power Tools生成映射时,会提示:“参数错误. (Exception from HRESULT: 0x80070057 (E_INVALIDARG))”. 解 ...
- 【hanoi】hanoi移动次数和移动步骤
#include<stdio.h> #include<stdlib.h> //移动次数 int hanoi(int num) { ; ) { ; } else { all = ...
- Pygame制作微信打飞机游戏PC版
使用Pygame制作微信打飞机游戏PC版 转至:http://www.cnblogs.com/dukeleo/p/3339780.html 前一阵子看了一篇文章:青少年如何使用Python开始游戏 ...
- jQuery 2.0.3 源码分析Sizzle引擎解析原理
jQuery 2.0.3 源码分析Sizzle引擎 - 解析原理 声明:本文为原创文章,如需转载,请注明来源并保留原文链接Aaron,谢谢! 先来回答博友的提问: 如何解析 div > p + ...
- C++中的引用和移动语义
C++引用现在分为左值引用和右值引用.其实很好理解,左值引用中的左值指的就是能出现在等号左边的值(带名称的变量,带*号的指针等一类的数据),程序能对这样的左值进行引用获得其地址:右值引用中的右值指的就 ...