第五周学习总结

一.本周学习主要内容

     本周,我们进一步学习了递归函数的使用,了解了递归函数的运行顺序。另外,还初步认识了数组。

二.递归函数

1.多次直接或间接调用函数本身。

2.使用递归函数必须要有递归出口,即需要有包含条件,来判断是否需要继续递归。

例如:

        使用递归函数来计算前n项和。

#include <stdio.h>
int sum( int n );

int main()
{
    int n;
    scanf("%d", &n);
    printf ("%d\n", sum(n));
    return 0;
}
int sum(int n)
{
    if (n<=0) 
      return 0;
    else if (n==1)
      return 1;
    else 
      return sum(n-1)+n;
}

tips:上述递归函数中,n<=0和n==1为此递归函数的结束条件,并且将这个出口值返回。

 

3.递归的缺点

①使用不当会导致堆栈溢出

②耗费时间可能很长,效率低下

4.递归的优化方法

 ①使用尾递归。

例如:使用递归函数求前n项的阶乘

#include <stdio.h>
int fact(int n, int t);

int main()
{
    int n;
    scanf("%d", &n);
    printf ("%d\n",fact(n,1));
    return 0;
}
int fact(int n, int t)
{
    if (n<=0) 
      return 0;
    else if (n==1)
      return t;
    else 
      return fact(n-1,n*t);
}

tips:使用一个t来保存某一项前一项的阶乘值,这样就避免了每次都要重复调用函数。

三.数组

小小知识点

1.数组的长度必须为最大下标+1;下标不能越界!!!

2.每次只能引用一个数组元素;

3.在定义数组时,若没有给出数组长度,系统会根据初值个数来判断数组长度。但是,最好不要忽略数组长度。

4.通常用for循环对数组进行遍历;

上一篇:浙大版《C语言程序设计实验与习题指导(第4版)》专题 递归函数的简单运用(实验10-2——实验10-8)


下一篇:zzulioj 1100