`
V3551G
  • 浏览: 2247 次
  • 性别: Icon_minigender_1
  • 来自: 西安
文章分类
社区版块
存档分类
最新评论

递归方法

 
阅读更多

递归方法用数学式子可定义为:

可以发现,递归需满足3个条件:1,自身调用自身 2,递归出口 3.参数收敛 ,从而达到缩小问题规模的目的,利用递归方法编写的程序短小易懂(有递归工作栈机制支撑)。

下面通过例子说明:

整数划分问题

题目:将整数n表示成一系列正整数之和:n=n1+n2+......+nk,其中n1>=n2>=........>=nk,求划分的个数。

分析:若直接设f(k)表示正整数n的划分数,实际上递归关系很难找。

考虑增加一个自变量,设f(n,m)表示最大加数不大于m的n的划分数,这样一来:

正整数n的划分由n1=n的划分和n1<=n-1的划分组成;正整数n的最大加数ni不大于m的划分由ni=m和ni<=m-1的划分组成。

则fn,m)可以表示为:


下图可以更形象将各区域划分表示清楚:

程序:

----------------------------------------------


-------------------------------------

结果:

6的划分个数为11,验证:

6=6=5+1=4+2=4+1+1=3+3=3+2+1=3+1+1+1=2+2+2=2+2+1+1=2+1+1+1+1=1+1+1+1+1+1














分享到:
评论

相关推荐

    递归方法编程,检查是否是回文

    采用递归方法编程,检查一个任意给定的字符串是否是回文

    用c# 递归方法,遍历目录

    用c# 递归方法,遍历目录,输入一个路径,能输出此路径下的全部文件和文件夹里的内容

    利用递归方法求5!.docx

    在这个例子中,我们使用Java编程语言来实现一个递归方法,计算5的阶乘(5!)。5的阶乘表示为5! = 5 × 4 × 3 × 2 × 1,结果是120。 首先,我们需要理解递归公式:`fn = fn_1 * 4!`。这个公式表明,为了计算任意...

    C#递归方法求阶乘字符串反转小程序

    在这个特定的案例中,我们将探讨如何使用递归方法计算阶乘以及实现字符串反转功能。这两个概念都是计算机科学的基础,并且在实际编程中有着广泛的应用。 首先,让我们理解阶乘的概念。阶乘是指一个正整数n的所有...

    一个简单的C程序递归方法求5!

    递归方法求5! 这是一个小程序,程序中编写了递归方法求5! 希望对大家有所帮助!

    用递归方法增加节点.rar

    本资源“用递归方法增加节点.rar”显然关注的是如何使用递归来添加节点到某种数据结构,可能是链表、树或其他自相似的数据结构。下面我们将详细探讨递归的概念以及如何使用递归在这些数据结构中添加节点。 递归是...

    treeview递归方法 查询节点

    在上述代码片段中,我们看到了一个具体的实现案例,即通过递归方法查询并构建`treeview`的节点。接下来,我们将深入分析这一知识点,包括其原理、代码解析以及可能的应用场景。 ### 1. 知识点概述:`treeview`递归...

    递归方法实现斐波那契数列_递归方法实现斐波那契数列_python_源码

    递归方法是实现斐波那契数列的一种常见方式。在编程中,递归是指函数调用自身来解决问题的方法。在这个场景下,我们可以编写一个函数,它会根据斐波那契数列的定义来计算第n项的值。 Python中递归实现斐波那契数列...

    c#用递归方法菜单遍历

    本篇文章将深入探讨如何使用递归方法遍历C#中的菜单。 首先,我们需要了解菜单在C#中的表示方式。在Windows Forms应用中,菜单通常由MenuStrip控件来创建和管理。MenuStrip允许我们添加菜单项(MenuItem)并支持子...

    递归方法在java中的解释说明

    ### 递归方法在Java中的解释说明 #### 一、递归的概念与原理 递归是一种重要的编程思想,在计算机科学中被广泛应用于算法设计。它指的是一个方法直接或间接地调用自身的过程。递归的核心在于能够将复杂的问题分解...

    c# 递归方法 约瑟夫环

    在C#编程中,我们可以使用递归方法来解决这个问题。递归是一种函数调用自身的技术,它通常用于处理具有自相似性质的问题。约瑟夫环问题就非常适合用递归来解决,因为每次减少一个人后,剩下的问题规模就是一个小得多...

    源代码_用递归方法编写函数_

    本文将深入探讨如何使用递归方法来编写函数,并以Fibonacci数列为例进行详细解释。 Fibonacci数列是数学中一个经典的序列,其定义如下:每个数都是前两个数的和,通常以0和1开始。序列的前几项是0, 1, 1, 2, 3, 5, ...

    阶乘递归方法(c语言)

    ### 阶乘递归方法(C语言) #### 背景与意义 在计算机科学领域,递归是一种重要的编程思想和技术,它被广泛应用于算法设计、数据结构处理以及问题解决等多个方面。递归的基本思想是通过将一个复杂的问题分解为若干...

    递归方法求阶乘字符串反转C#

    本文将基于“递归方法求阶乘与字符串反转”这一主题,深入探讨递归的基本概念、工作原理以及如何在C#语言中实现阶乘计算和字符串反转。 ### 一、递归的基本概念 递归(Recursion)是指在函数的定义或算法的描述中...

    用递归方法实现读取文件夹下所有文件信息

    在C#中,我们可以利用递归方法来读取文件夹下所有文件的信息,包括文件名、路径、大小等。本篇文章将深入探讨如何实现这个功能。 首先,我们需要了解递归的基本概念。递归是指一个函数在其定义中调用自身的过程。在...

    c#文件扫描递归方法实现

    在C#编程中,文件扫描递归方法是一种常见的任务,特别是在处理文件系统操作时。这种方法允许我们遍历文件夹及其所有子文件夹,查找特定类型的文件或者执行某些操作。在这个场景下,我们可以创建一个功能强大的多线程...

    无限极节点,控件类,2个递归方法.rar

    在这个"无限极节点,控件类,2个递归方法.rar"的压缩包中,我们很可能是看到了两个关键的递归函数,用于构建和遍历无限级节点树。递归方法是编程中的重要技巧,它通过调用自身来解决问题,尤其在处理树形结构时非常...

    216.214.JAVA基础教程_面向对象(上)-递归方法的使用(216).rar

    在Java的基础教程中,面向对象编程是核心概念之一,而递归方法的使用是编程中一个非常重要的技术,尤其对于理解复杂问题的解决有重要作用。本教程将深入探讨递归方法在Java中的应用。 递归是编程中一种自调用的方法...

    递推和递归方法在C语言程序设计中的应用.pdf

    "递推和递归方法在C语言程序设计中的应用.pdf" 递推和递归方法是计算机高级语 言程序设 计课 程中的重点和难点。递归是一种算法,在程序设计中广泛应用。它是调 用一个函数的过程中又出现直接或者间接地调 用该函数...

Global site tag (gtag.js) - Google Analytics