递归简单实例

例子:汉诺塔 

void aTOb( int n ,char a, char b, char c )
{
 if ( n == 1 )
  cout << a << " - > " << c << endl;
 else
 {
  aTOb( n - 1, a, c, b );
  cout << a << " - > " << c << endl;
  aTOb( n - 1, b, a, c );
 }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,我可以回答这个问题。归程序是指函数调用自身的过程。下面是一个简单归程序示例: ``` #include <stdio.h> int factorial(int n) { if (n == ) { return 1; } else { return n * factorial(n - 1); } } int main() { int n = 5; int result = factorial(n); printf("%d! = %d\n", n, result); return ; } ``` 这个程序计算了 5 的阶乘,即 5! = 5 * 4 * 3 * 2 * 1 = 120。在函数中,如果 n 等于 ,就返回 1;否则,就返回 n 乘以 factorial(n-1) 的结果。这个函数会一直归调用自身,直到 n 等于 。 ### 回答2: 归程序是指在程序执行过程中调用自身的过程。比如下面这个简单归程序: ```C #include <stdio.h> int factorial(int n) { if (n <= 1) { return 1; } else { return n * factorial(n - 1); } } int main() { int num = 5; int result = factorial(num); printf("The factorial of %d is: %d\n", num, result); return 0; } ``` 此程序计算一个数的阶乘。函数`factorial`接收一个整数作为参数,若参数小于等于1,则返回1;否则,调用自身传入参数减一,并将其与当前参数相乘后返回。在`main`函数中,我们传入5作为参数,然后打印出计算结果。 归主要包含两个要素:基本情况和推关系。基本情况即归的终止条件,在上述例子中是当n小于等于1时返回1;推关系即归调用自身的过程,在上述例子中是调用`factorial(n - 1)`。 值得注意的是,归程序必须有一个明确的终止条件,否则会陷入无限归,导致栈溢出等问题。同时,归的效率一般较低,因为每次调用函数都需要保存当前的状态信息,而且归过程需要不断地进行函数调用和返回。 ### 回答3: 归程序是指一个函数调用自身的过程。在归过程中,问题被分解为更小的子问题来解决,然后再将这些子问题的解组合起来得到最终结果。 归程序的基本思想是:通过一个归函数,使用相同的函数来处理规模较小的问题,直到问题的规模足够小,可以直接得到解决方案,然后将这些解决方案逐层返回,最终得到原始问题的解。 归程序通常分为两个部分:基本情况(base case)和归情况(recursive case)。基本情况是指问题规模足够小,可以直接求解的情况。归情况是指将问题分解为更小的子问题,通过调用相同的归函数来解决。 归程序的编写需要注意以下几个要点: 1. 确定基本情况,即问题规模足够小,可以直接求解。 2. 确定归情况,即将问题分解为更小的子问题。 3. 确定归函数的参数和返回值。 4. 确保归过程中能够不断向基本情况靠近,以避免无限归引发栈溢出等问题。 举例说明,实现一个归函数计算一个正整数的阶乘: ```python def factorial(n): # 基本情况:当n等于0或1时,直接返回1 if n == 0 or n == 1: return 1 # 归情况:将问题分解为n乘以(n-1)的阶乘 else: return n * factorial(n-1) ``` 在上述代码中,基本情况是当n等于0或1时,直接返回1。归情况是将问题转化为n乘以(n-1)的阶乘,通过调用相同的归函数来求解。最终,当归到n等于0或1时,不再进行归调用,直接返回1,并将归函数的结果层层返回,得到原始问题的解。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值