首页 > 试题广场 >

该段代码的输出结果是? [$##$] #inclu

[填空题]
该段代码的输出结果是? 1

#include<iostream>
using namespace std;
int nest(int i)
{
    if (i < 0 )
        return 0;
    else if (i == 0)
        return 1;
    else
        return nest(i-1) + nest(i-2) + i;
}
int main( )
{
    cout << nest(7)<< endl;
    return 1;
}

递归,其实不用把所有的结果依次算出来,如下图,虚线是不需要重复计算的,每一个结点的值只需要计算一次,下一次直接用就行了。
需要注意的是需要加上结点本身自己的值,比如计算结点3时,其值等于:nest(3)=nest(2)+nest(1)+3(结点本身的值)。其他结点也是一样,从题目return nest(i-1) + nest(i-2) + i最后的i可以看到。

编辑于 2017-10-12 09:31:28 回复(0)
从底向上更快
nest(0)=1 
nest(1)=2
nest(2)=5 
nest(3)=10 
nest(4)=19 
nest(5)=34 
nest(6)=59 
nest(7)=100 

发表于 2017-09-06 19:36:44 回复(2)
100
发表于 2017-12-08 09:27:33 回复(0)
100
发表于 2017-11-30 20:11:28 回复(0)
都是大神啊
发表于 2017-11-17 12:45:23 回复(0)
100。。。没想到结果这么整
发表于 2017-09-11 10:56:30 回复(0)