//n枚硬币问题 void solve(int coin[], int n, int p, int q) { if (n < 3){//少于三枚没有比较对象无法判断真假 printf("无法判断\n"); return; } if (p == q){ printf("第%d枚, 假币的重量为%d\n", p+1, coin[p]); } else if (q - p == 1){//还剩两枚硬币时 if (p > 0){//第0枚为真 if (coin[p] == coin[0])//第p枚为真 solve(coin, n, p + 1, q); else//第q枚为真 solve(coin, n, p, q - 1); } else if (q < n - 1){//第n-1枚为真 if (coin[p] == coin[n - 1]) solve(coin, n, p + 1, q); else solve(coin, n, p, q - 1); } } - 1]) solve(coin, n, p + 1, q); else solve(coin, n, p, q - 1); } }