1.一行代碼解決的輾轉相除法
for(;;){if ((m %= n) == 0) return n;if ((n %= m) == 0) return m;}
2.推進式的前綴表達式求值,沒見過這種遞歸@@
for(;;){if ((m %= n) == 0) return n;if ((n %= m) == 0) return m;}
2.推進式的前綴表達式求值,沒見過這種遞歸@@
char *a; int i;
int eval()
{
int x = 0;
while (a[i] == ' ') i++;
if (a[i] == '+')
{
i++;
return eval() + eval();
}
if (a[i] == '*')
{
i++;
return eval() * eval();
}
while ((a[i] >= '0') && (a[i] <= '9'))
x = 10 * x + (a[i++] - '0');
return x;
}
int eval()
{
int x = 0;
while (a[i] == ' ') i++;
if (a[i] == '+')
{
i++;
return eval() + eval();
}
if (a[i] == '*')
{
i++;
return eval() * eval();
}
while ((a[i] >= '0') && (a[i] <= '9'))
x = 10 * x + (a[i++] - '0');
return x;
}