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

小白求问简单问题,大変ですね

#include<stdio.h>
#include<iostream>
using namespace std;
void exchange(int* a,int* b)
{
    int temp =*b;
    *b=*a;
    *a=temp;
}
int multi(int n)
{
    int num;
    if(n==1)
    {
        return 1;
    }
    num=n*multi(n-1);
    printf("打印出来为%d\n",num);
}
int main(int argc,char**argv)
{
    int a=9;
    int b=99;
    exchange(&a,&b);
    printf("a:%d,b:%d\n",a,b);
    multi(5);
    return 0;
}

这样运行为

a:99,b:9

打印出来为2

打印出来为36

打印出来为52

打印出来为65


而这样

#include<stdio.h>
#include<iostream>
using namespace std;
void exchange(int* a,int* b)
{
    int temp =*b;
    *b=*a;
    *a=temp;
}
int multi(int n)
{
    int num;
    if(n==1)
    {
        return 1;
    }
    num=n*multi(n-1);
}
int main(int argc,char**argv)
{
    int a=9;
    int b=99;
    exchange(&a,&b);
    printf("a:%d,b:%d",a,b);
    cout<<endl<<multi(5);
    return 0;
}

运行为

a:99,b:9

120


这是为什么呢?😭

正在回答

2 回答

// 你的第一个代码,个人觉得应该为:


#include<stdio.h>

#include<iostream>

using namespace std;

void exchange(int* a, int* b)

{

    int temp = *b;

    *b = *a;

    *a = temp;

}

int multi(int n)

{

    int num;

    if (n == 1)

    {

        return 1;

    }

    else {

        num = n * multi(n - 1);  // 应该把代码放在else里面,因为逻辑为“非黑即白”

        return num; // 需要给返回值接收进行 阶乘

    }

    printf("打印出来为%d\n", num); // 函数的结束关键字"return",所以不会执行该语句了

}

int main(int argc, char** argv)

{

    int a = 9;

    int b = 99;

    exchange(&a, &b);

    printf("a:%d,b:%d\n", a, b);

    int m;

    m = multi(3); // 声明一个变量接收返回值

    std::cout << m; // 打印阶乘的结果,检验是否正确

    return 0;

}


//返回结果

//a:99, b : 9

//6 (输入3,得到结果6,正确)


0 回复 有任何疑惑可以回复我~

// 我的代码是这样的




//练习2:利用递归来求一个数的阶乘

int fun2(int n) {

if (n == 1) {

return n;

}

else {

return n * fun2(n - 1);

}

}

//练习1:使用函数来交换两个数的值

int fun1(int* a, int* b) {

int c = *a;

*a = *b;

*b = c;


return 0;

};


#include<iostream>

int main() {

int a = 2;

int b = 3;

fun1(&a, &b);

std::cout << a << std::endl; // 3

std::cout << b << std::endl; // 2


int n;

std::cout << "请输入一个数,求阶乘:";

std::cin >> n;

n = fun2(n);

std::cout << n; // 输入3赋值,得到6


return 0;

}



0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
趣味 C++ 入门
  • 参与学习       27964    人
  • 解答问题       171    个

C++ 入门,开启趣味学习之旅,揭开 C++ 的神秘面纱,让你不再望而生畏。

进入课程

小白求问简单问题,大変ですね

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信