使用递归找到方程的所有解

时间:2018-12-11 12:19:22

标签: c recursion sum equation digits

我被赋予了使用递归在C语言中编写程序的任务。程序以字符串形式给出方程式,例如“ 123 + 123 = 246”。

我的任务是确定方程式是否正确。要注意的是,等式中的数字有时会替换为'',例如“ 1 ?? + ?? 3 = ?? 6”。使用递归,当用数字替换''且等式正确时,我需要总结所有可能性。

很显然,该解决方案将基于尝试所有可能的方法,并仅选择组成正确方程式的那些方法。但是我不知道如何实现它。

任何人都可以给我一个提示或答复,并提供一段我可以基于其解决方案的代码吗?

非常感谢!

1 个答案:

答案 0 :(得分:1)

这是一个基本概念:

基本上,我们希望首先能够确定方程式是否正确 实现此功能

int eval(char * string ) 

这将返回1表示true,0表示false,而-1仍返回'?'

现在我们要编写递归,它将返回一个字符串并接受一个字符串

char * recursion (char * string)

首先,我们需要查看字符串是否包含完整的方程式。

Int res = eval(string);
if(res == 1)return string;
else if(res == 0)return "";

如果尚未停止,则表示由于'?'而无法确定。 ,我们需要找到一种杀死它们的方法。 蚀刻'?可以是0或1或2或3或4或5或6或7或8或9 让我们做一个for循环 但是首先实现替换第一个“?”的方法加上数字

char * Replace(char* string,int num);

实现此功能后,我们将创建for循环

for (int i = 0; i< 10 ; i++){
 char * result =recursion(Replace(string , I));
 if(Eval(result)==1) ;//we found a right answer add it to our return
}
return ""+ [all right answers we found if we even found ];

祝你好运!