我想通過遞歸編碼C中的東西。找到一個遞歸的兩位數字
用戶寫入2相同的長度的正數和節目給他一個新的號碼,它是由這樣的:
新號碼統一位=在第二正數的最小數字用戶中寫道。
新號碼十位=用戶寫入的第一個正數中的最大數字。
很簡單,其實,這裏有一個例子:
5642
和2371
會給我們:61
。
我想是這樣的:
#include <stdio.h>
int calcPair(int a, int b){
int number = calcPair(a/10, b/10);
int digit1 = (number/10);
int digit2 = number%10;
if(digit1 < a%10){
digit1 = a%10;
}
if(digit2 > b%10){
digit2 = b%10;
}
return(number);
}
int main()
{
int a, b, number=0;
printf("Please enter two positive number of same length:\n");
scanf("%d", &a);
scanf("%d", &b);
calcPair(a, b);
printf("The two-digit number composed from %d, %d is: %d", a, b, number);
return 0;
}
但程序並不運行在所有..和關閉。
也許有人能糾正我?或者幫我找到錯誤。
提前致謝。
想法:既然它的「用戶寫兩個正數」,使用'unsigned'而不是'int'。可能不會影響你目前的問題,但。 – chux
只是看你的代碼,它只是不斷調用自己的輸入除以10.你有無限遞歸。你需要有一個路徑,它只是返回一個答案,而不是對自己的呼叫。 – Jiminion
@Jim:類似的東西:if digit 2 == .. && digit 1 == .. so return(number)?謝謝。 – user3605367