c语言教程word,C语言入门

编程知识 更新时间:2023-04-06 19:55:04

很多同学都卡在了getWordNumber(n-1)+n这一块,表示理解不能,说下自己的浅见。

原例子中的getWordNumber(n-1)+n这种写法比较有误导性,我盯着这段代码看了半小时也没反应过来,但是如果把代码写成这样:

return n+getWordNumber(n-1) ;

是否清晰了很多?

参数n现在要相加的是参数为(n-1)的整个getWordNumber()函数,那么这个时候就要计算getWordNumber(n-1)的值,需要走一遍函数中的if else语句才能求得。举个例子:

当n==3的时候,要计算 getWordNumber(3),此时函数内n+getWordNumber(n-1)就变成了3+getWordNumber(3-1)。

注意,这时getWordNumber括号里的参数n变成了实参2,但是我们现在并不知道函数getWordNumber(2)的值,需要再次把实参2代入函数中的if else语句里进行运算,此时n+getWordNumber(n-1)就变成了2+getWordNumber(2-1),此时参数n又变成了1,我们依旧不知道getWordNumber(1)的值,依旧把实参1代入函数,发现

if(n == 1)

{

return 1;

}

此时函数getWordNumber(1)就求得了值=1,有了getWordNumber(1)的值就能求得getWordNumber(2)=3,接下来便能求得getWordNumber(3)=6,所以getWordNumber(3-1)+3的值等于6。

打个比方,就像用英英词典查一个单词,发现英文解释中有个单词还是不认识,于是接着用这本词典查这个不认识的词,然后发现解释里还是有一个不认识的单词,于是接着查第3次,第4次...查到最后一次终于没有不认识的单词了,一路回溯,才能知道查的第1个单词是什么意思。

这个比方中的词典就是递归函数,单词就是函数中的参数。

编程新手,如有误,轻拍。

更多推荐

c语言教程word,C语言入门

本文发布于:2023-04-06 19:55:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/8db1a62bc048c22109cfda614a24834f.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:语言   入门   教程   word

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!

  • 50602文章数
  • 14阅读数
  • 0评论数