博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
C基础之递归(思想很重要,学会找规律)
阅读量:7236 次
发布时间:2019-06-29

本文共 1335 字,大约阅读时间需要 4 分钟。

递归思想的条件:1.函数自己调用自己  2.函数必须有一个固定的返回值(如果没有这个条件会发生死循环)

----规律很重要

简单递归题目一:

设计一个函数计算一个整数的n次方,比如2的3次方,就是8

步骤:

1.定义方法,以及方法中的参数--power( int base ,int n )

2.根据定义的方法来找规律:

 

 

函数终止条件:n==0时,返回1;n<0时,返回-1;红色箭头表示函数的执行过程蓝色箭头表示函数达到条件后开始一层一层的返回值,具体代码如下:

1 long power(int base, int n)2 {3     if (n<0) return -1;4     5     if (n == 0) return 1;6     7     // n一定>08     return power(base, n-1) * base;9 }

简单递归题目二:

设计一个函数,计算1+2+3+4+5+6+7+8+...+n的值

要求n必须>0

步骤:

1.定义方法,以及方法中的参数--leiJia( int n )

2.根据定义的方法来找规律:

leiJia(0)==0;

leiJia(1)==leiJia(0) + 1;

leiJia(2)==leiJia(1) + 2;

leiJia(3)==leiJia(2) + 3;

      .
      .
      .

leiJia(n)==leiJia(n-1) + n;

函数终止条件:n==1时,返回1;n<0时,返回0;具体代码如下:

1 long leiJia(int n) 2 { 3     /* 4     // 这里的0随便 5     if (n<=0) return 0; 6      7     // 仔细分析一下,可以发现这行代码可以省略 8     //if (n == 1) return 1; 9     return leiJia(n-1) + n;10      */11     12     return (n<=0) ? 0 : ( leiJia(n-1) + n );13 }

简单递归题目三:

设计一个函数计算1!+2!+3!+……+n!的值

4! = 1 * 2 * 3 * 4;
n! = 1 * 2 *.... *n

步骤:

1.定义方法,以及方法中的参数--pidAdd(n);

2.根据定义的方法来找规律:

pidAdd(1)==1;

pidAdd(2)==pidAdd(1) + 2! ;

pidAdd(3)==pidAdd(2) + 3! ;

      .
      .
      .

pidAdd(n)==pidAdd(n-1) + n! ;

函数终止条件:n==1时,返回1;n<0时,返回0;具体代码如下:

1 long pieAdd(int n)2 {3     if (n == 1) return 1;4     return pieAdd(n-1) * dieCheng(n);//dieCheng 函数实现的是从1*2*3*...*n5 }

递归的学习不止这些,在以后的学习过程中继续整理,共同学习。

 

转载地址:http://vqofm.baihongyu.com/

你可能感兴趣的文章
SpringCloud(第 047 篇)注解式Async配置异步任务
查看>>
微服务指南走北(五):什么样的服务才可以说是微服务?
查看>>
在virtualbox 下安装ubuntu 并配置共享文件夹
查看>>
cp、mv、install
查看>>
Redis学习笔记——dict
查看>>
前端实例练习 - 动效伸缩搜索框
查看>>
Ruby 2.x 源代码学习:ubuntu 环境 下载,编译,调试 ruby 源代码
查看>>
使用 Kanban精益创新
查看>>
Javaslang 3.0之路
查看>>
大搜车孙信宇:一个好的团队应该去中心化
查看>>
《A Practical Guide to Continuous Delivery》作者访谈录
查看>>
一文看懂大数据领域的六年巨变
查看>>
Rust 和Erlang的对比
查看>>
DevOps实战:Graphite监控上手指南
查看>>
ODE网络:一场颠覆RNN的革命即将到来
查看>>
微软宣布开源WPF、WinForms和WinUI
查看>>
搞容器,必须考虑这五大安全要素
查看>>
javascript招式总结
查看>>
如何对DevOps数据库进行源代码控制
查看>>
Netflix是如何针对云构建和部署代码的
查看>>