为了账号安全,请及时绑定邮箱和手机立即绑定

我是小白,大老求罩

我是小白,大老求罩

C
qq_独倚灵剑醉仙楼_0 2017-08-03 14:34:59
求大佬讲讲递归,完全不懂啊,很难受。
查看完整描述

3 回答

已采纳
?
fatewa

TA贡献40条经验 获得超8个赞

/**递归的函数*/
private int getNumber(String str){
    int res = 0;
    res = summary(str);
    if (res < 10)
        return res;
    else
    return getNumber(String.valueOf(res));
}

/**
 * 计算各个位数字总和的函数
 * @param number 传入的参数
 * @return 返回的结果
 */
private int summary(String number){
    int res = 0;
    for (int i = 0;i<number.length();i++){
        res += Integer.valueOf(String.valueOf(number.charAt(i)));
    }
    return res;
}

这是我之前在浙大ACM上做过的一道题目用的就是递归你可以参考一下

这是Java语言的

查看完整回答
反对 回复 2017-08-03
?
qq_独倚灵剑醉仙楼_0

TA贡献3条经验 获得超0个赞

大佬能讲讲return n和n=getnumber的意思作用运算过程吗?小白真的谢谢了。?

查看完整回答
反对 回复 2017-08-03
  • fatewa
    fatewa
    我打了注释你再看下我之前的回复吧
?
fatewa

TA贡献40条经验 获得超8个赞

#include<stdio.h>
int getNumber(int n){
	n += 1;
	printf("N= %d\n",n);
	if (n>20)
		return n; //当递归达到了条件返回n的当前数值来跳出递归
	else
 		getNumber(n); //如果没有达到条件就调用自身
 	
}
int main(){
	printf("%d\n",getNumber(6));
	//调用getNumber();后进入第一次递归
	/**
	getNumber(6){
	n += 1; 此时 n = 7
	printf("N= %d\n",n); //输出了一条 N= 7
	if (n>20) //进入条件判断 7 < 20 所以进入else的代码块 
		return n; 
		//当递归到了 21 开始大于 20 了就跳出递归
	else
 		getNumber(n); 
 		//此时相当于又进行了一次getNumber(7); 过程与getNumber(6);一样           
 	}
	*/
	return 0;
}

简单的例子 当n小于20时候一直递归,等到大于20了在返回

附一张运行图

//img1.sycdn.imooc.com//598300580001c6b503940316.jpg


查看完整回答
反对 回复 2017-08-03
?
fatewa

TA贡献40条经验 获得超8个赞

简单的说就是在函数中调用自己本身 等达到一定条件以后再跳出。

查看完整回答
反对 回复 2017-08-03
  • 3 回答
  • 1 关注
  • 1928 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信