-3
어떤 이유로 내 코드의 if else 문은 -2147483647을 반환합니다. 이유를 모르겠다. 나는 브레이크 포인트를 사용 int.MaxValue, 당신은 minNumber의 호출의 결과에 1
를 추가하여 for
루프에서 2147483647결과로 계속 -2147483647 계속
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace ConsoleApplication9
{
class Program
{
static void Main(string[] args)
{
int [] array = {1,2,3};
int bigNumber = 5;
Console.WriteLine(minNumber(bigNumber, array).ToString());
Console.ReadLine();
}
private static int minNumber(int bigNumber, int[] array)
{
int minNumberOCoins = int.MaxValue;
if (bigNumber == 0) { return 0; }
else if (bigNumber <= 0) { return minNumberOCoins; }
for (int i = 0; i < array.Length; i++)
{
int returnedNumbers = minNumber((bigNumber - array[i]), array) +1;
if (returnedNumbers < minNumberOCoins)
{
minNumberOCoins = returnedNumbers;
}
}
return minNumberOCoins;
}
}
}
디버거를 사용하면 몇 개의 중단 점을 넣고 볼 수 있습니까? – zerkms
중단 점과 디버거를 사용했습니다. 어떤 이유인지 else if 문은 int.MaxValue의 음수 버전을 반환합니다. – Aaron
그래서 "어떤 이유"가 무엇입니까? 그것을 굳히지 않습니까? – zerkms