课堂限时训练-命令行参数·递归

课堂限时训练-命令行参数·递归



实验说明

本周课堂实践中,主要是练习了命令行参数的运用。有两个知识点:一是通过Integer将字符串转换为数字;二是递归函数的调用。

代码实现

  • 码云链接

  • 核心代码:

    • 普通方法:
    • 递归调用:
  • 结果展示

实践中的问题和解决方法

  • 问题:递归实验中,出现以下问题:

  • 解决方法:
    将代码int sum=clSum(10)改为
  • 分析原因:递归函数clSum中的参数是int [] 类型,而调用语句int sum = clSum(10),中的“10”为int类型,两者无法兼容,产生冲突。并且,要传进来的参数是数组的值,而并非个数,因此传10本身就是错误的。
    修改为int[] x=new int[10];int sum=clSum(x)后,x为int [] 类型,与被调参数的类型一致,问题解决。

实验分析

本次实验实际上很简单,最核心的就是通过Integer将字符串转换为数字,然后换一种方式,练习递归函数的调用。应该解决的最主要的问题就是:数组中是以字符串的形式存储的,因此应当首先将字符串转换为数字,才能进行接下来的求和运算。
实验中,

int k;
        for (int i = 0; i < args.length; i++) {
            k = Integer.parseInt(args[i]);
            sum=sum+k;
        }

语句 k = Integer.parseInt(args[i])实现了将数组args[i]通过Integer转换为数字类型,然后通过一个循环内的作和,从而实现相加运算。
另外,递归调用是一种简单、常用又重要的一种编程思想。就是在当前的函数中调用当前的函数并传给相应的参数,这是一个动作,这一动作是层层进行的,直到满足一般情况的的时候,才停止递归调用,开始从最后一个递归调用返回。从而实现,将大问题分解成小问题,将复杂的问题简单化。在本例中,要算出一个10元素的数组的和,只要先算出前9个的和,再加上最后一个就好了;要算出前9个的和,只要先算出前8个的和就好了;直到只剩下一个元素的时候,返回该元素,即可。

学到了什么

首先,学会了Integer的用法,如何实现将字符串转换为数字;然后巩固了递归调用的思想和具体方法。以后遇到此类问题会较快发现问题,从而不在类似方面犯错。

感悟与体会

通过本次实践的练习,了解到基础知识不牢固。刚开始Integer用法不熟练,然后又出现了类型转换不兼容的问题,在检查错误和查阅资料方面,花费了相当长的时间。
因此要多注重基础知识的积累,注重平时。

posted on 2017-06-15 01:06  20169214姚静  阅读(146)  评论(0编辑  收藏  举报