秋风起琴瑟里
2023-07-03 13:05
#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
这是为什么呢?😭
// 你的第一个代码,个人觉得应该为:
#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,正确)
// 我的代码是这样的
//练习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;
}
趣味 C++ 入门
31577 学习 · 191 问题
相似问题