亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

小白求問簡單問題,大変ですね

#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++ 入門
  • 參與學習       32229    人
  • 解答問題       195    個

C++ 入門,開啟趣味學習之旅,揭開 C++ 的神秘面紗,讓你不再望而生畏。

進入課程

小白求問簡單問題,大変ですね

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號