自定义了一个函数,但是主函数用到这个函数,输出结果就啥也没有

问题遇到的现象和发生背景

自定义了一个函数,但是主函数用到这个函数,输出结果就啥也没有

问题相关代码,请勿粘贴截图

#include
using namespace std;
int han(int a,int b,int n){
int sum=0;
if(n==1)
sum=a;
if(n==2)
sum=b;
else
sum=han(a,b,n-1)+han(a,b,n-2);
return sum;
}
int main(){
int a=han(1,2,3);
cout<<a;
return 0;
}

运行结果及报错内容

没有报错,但啥也没有输出

怎么样可以输出结果,为啥不会输出?

这是递归函数,死循环了吧
if(n==2)改为else if(n==2)
否则当n=1时,还是会执行 sum=han(a,b,n-1)+han(a,b,n-2);的

int han(int a,int b,int n){
    int sum=0;
    if(n==1)
        sum=a;
    else if(n==2)
        sum=b;
    else
        sum=han(a,b,n-1)+han(a,b,n-2);
    return sum;
}
int main(){
    int a=han(1,2,3);
    cout<<a;
    return 0;
}

因为你第二个if没有写成else if
导致只要n不等于2,就会继续递归
那么你最初n=3
递归时分别进入n=2和n=1,
n=2时返回b
n=1时不满足条件,无限递归

#include
using namespace std;
int han(int a,int b,int n){
int sum=0;
if(n==1)
sum=a;
else if(n==2)//这里少了个else
sum=b;
else
sum=han(a,b,n-1)+han(a,b,n-2);
return sum;
}
int main(){
int a=han(1,2,3);
cout<<a;
return 0;
}
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!
PS:问答VIP年卡 【限时加赠:IT技术图书免费领】,了解详情>>> https://vip.csdn.net/askvip?utm_source=1146287632