您的位置:首页 > 其它

C基础之递归(思想很重要,学会找规律)

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

----规律很重要

简单递归题目一:

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

步骤:

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

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



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

long power(int base, int n)
{
if (n<0) return -1;

if (n == 0) return 1;

// n一定>0
return power(base, n-1) * base;
}


简单递归题目二:

设计一个函数,计算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;具体代码如下:

long leiJia(int n)
{
/*
// 这里的0随便
if (n<=0) return 0;

// 仔细分析一下,可以发现这行代码可以省略
//if (n == 1) return 1;
return leiJia(n-1) + n;
*/

return (n<=0) ? 0 : ( leiJia(n-1) + n );
}


简单递归题目三:

设计一个函数计算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;具体代码如下:

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


递归的学习不止这些,在以后的学习过程中继续整理,共同学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: