基本上,我希望能够输入先前返回的值并让它计算函数的参数。示例:给定以下程序,我想输入"结果"并计算" num1"和" num2"。我的功能要复杂得多。
int max(int num1, int num2) {
if (num1 > num2)
result = num1;
else
result = num2;
return result;
}
答案 0 :(得分:3)
你不能轻易做到这一点。这就是公钥加密工作的原因 - 很容易以一种方式计算,但很难找到原始参数。
您可以尝试num1和num2的所有可能排列并进行搜索,直到获得所需的结果,但这比预期的要长几个数量级。
此外,正如评论中提到或提到的那样,两个方向的功能并不总是1..1。例如,问题只有一个答案“10和20的平均值是多少?”虽然对于“两个数字平均到15个是什么?”这个问题有无限的答案。显然10和20平均到15,但11和19也平均到15。
答案 1 :(得分:3)
仅当每个输入产生单个输出时才可以这样做。
如果你的函数是f(x) - > n,你可以为x,record n提供每个可能的值,然后你会有一个查找表,可以用来查找x,当给定n时。
这就是密码破解在设计不良的系统上的工作原理。
如果函数需要多个可以产生相同值的参数,则在给定输出时无法获得输入,因为f(x,y) - > 3可以是f(1,2)或f(-10000,10003)或其他任何东西。