public int countRecursivelyPalindromicPartitions(int number) {
		if (number <= 0)
			System.err.println("invalid parameter less or equal to 0.");
		if (dp[number] != -1)
			return dp[number];
		int result;
		if (number % 2 == 0) {
			result = 1 + countRecursivelyPalindromicPartitions(number / 2);
			for (int i = 2; i < number; i += 2)
				result += countRecursivelyPalindromicPartitions((number - i) / 2);
		}
		else {
			result = 0;
			for (int i = 1; i < number; i += 2)
				result += countRecursivelyPalindromicPartitions((number - i) / 2);
			result++;
		}
		dp[number] = result;
		return result;
	}