zoukankan      html  css  js  c++  java
  • 【学习笔记】【C语言】递归

    一、基本内容:
    C语言中的函数可以递归调用,即:可以直接(简单递归)或间接(间接递归)地自己调自己。
    要点:
    1、C语言函数可以递归调用。
    2、可以通过直接或间接两种方式调用。目前只讨论直接递归调用。

    二、递归条件
    采用递归方法来解决问题,必须符合以下三个条件:
    1、可以把要解决的问题转化为一个新问题,而这个新的问题的解决方法仍与原来的解决方法相同,只是所处理的对象有规律地递增或递减。
    说明:解决问题的方法相同,调用函数的参数每次不同(有规律的递增或递减),如果没有规律也就不能适用递归调用。
    2、可以应用这个转化过程使问题得到解决。
    说明:使用其他的办法比较麻烦或很难解决,而使用递归的方法可以很好地解决问题。
    3、必定要有一个明确的结束递归的条件。
    说明:一定要能够在适当的地方结束递归调用。不然可能导致系统崩溃。

    三、代码

     1 /*
     2 设计一个函数,用来计算b的n次方
     3  
     4  递归的2个条件:
     5  1.函数自己调用自己
     6  2.必须有个明确的返回值
     7 */
     8 #include <stdio.h>
     9 int pow2(int b, int n);
    10 
    11 int main()
    12 {
    13     int c = pow2(3, 2);
    14     
    15     printf("%d
    ", c);
    16     return 0;
    17 }
    18 
    19 /*
    20  pow2(b, 0) == 1
    21  pow2(b, 1) == b == pow2(b, 0) * b
    22  pow2(b, 2) == b*b == pow2(b, 1) * b
    23  pow2(b, 3) == b*b*b == pow2(b, 2) * b
    24  
    25  1> n为0,结果肯定是1
    26  2> n>0,pow2(b, n) == pow2(b, n-1) * b
    27  */
    28 
    29 int pow2(int b, int n)
    30 {
    31     if (n <= 0) return 1;
    32     return pow2(b, n-1) * b;
    33 }
    34 
    35 /*
    36 int pow2(int b, int n)
    37 {
    38     // 用来保存计算结果
    39     int result = 1;
    40     
    41     
    42     //result *= b;
    43     //result *= b;
    44     //result *= b;
    45     //result *= b;
    46     //....
    47     
    48     //n次
    49 
    50     
    51     for (int i = 0; i<n; i++)
    52     {
    53         result *= b;
    54     }
    55     
    56     return result;
    57 }*/
  • 相关阅读:
    hive on tez自定义jobname
    hive血缘关系之输入表与目标表的解析
    spark ml中一个比较通用的transformer
    TF-IDF小记
    namenode服务迁移
    spark on yarn上的dynamic executor
    zookeeper集群线上机器置换
    namenode元数据容错
    Spark HistoryServer服务迁移
    Java中Webservice调用.NET天气接口生成客户端异常
  • 原文地址:https://www.cnblogs.com/dssf/p/4624449.html
Copyright © 2011-2022 走看看