我必須制作一個 func 來執行類似 123 -> 321 的遞回當我通過除錯器看到我的 func 的作業時,我看到它發生了變化,但是當我在 main 上呼叫函式時,沒有任何變化 這是我的代碼
#include <stdio.h>
#include <math.h>
long int SwapNum(long int , int);
int CountRoz(long int);
int main(){
long int a = 123;
printf("%ld", a);
SwapNum(a, CountRoz(a));
printf("%ld", a);
}
int CountRoz(long int a) {
if (a / 10 == 0)
return 1;
return 1 CountRoz(a / 10);
}
long int SwapNum(long int a, int b) {
a =a % 10 * pow(10, 2 * b - 1);
if (b == 1) {
return 1;
}
b--;
return SwapNum(a / 10, b);
}
你能幫我嗎,因為我找不到錯誤
uj5u.com熱心網友回復:
您也可以嘗試通過參考傳遞,盡管我不確定您的演算法是否完全正確。
long int SwapNum(long int *, int);
...
SwapNum(&a, CountRoz(a));
...
long int SwapNum(long int *a, int b) {
*a = *a % 10 * pow(10, 2 * b - 1);
if (b == 1) { return 1; }
b--;
long int a2 = *a/10;
return SwapNum(&a2, b);
}
因此,模數運算子可能是您在 Swapnum 的第一行中嘗試使用的。123 % 10 產生 123 除以 10 的余數。請記住,整數數學將產生整數;12/10 產生 1。
假設我們從以下開始:
我們按照您計劃的那樣遍歷 A 中的數字,除以 10 并
通過乘以 10(加上余數)來建立回傳值
long int SwapNum(long int, long int);
int main(){
long int a = 12388569;
printf("%ld", a);
printf("%ld", SwapNum(a,0));
}
long int SwapNum(long int a, long int b) {
if (a == 0) return b;
return SwapNum(a/10, b*10 a%10);
}
希望這可以幫助!
羅恩。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/460990.html
上一篇:遞回地將目錄和檔案復制到目標
下一篇:打字稿嵌套物件結構條件/遞回型別
