程序所有可能的函数执行路径查找算法?


C语言为例:

   
  int main (void)
  
{
funcA();
funcB();
return 0;
}

void funcA()
{
if (condition)
{
funcC();
} else {
funcD();
}
}

void funcB()
{
//
}

void funcC()
{
//
}

void funcD()
{
//
}

程序分析源码的输出为:

   
  1. main->funcA->funcC->funcB
  
2. main->funcA->funcD->funcB

如果函数内有循环,循环体内调用其他函数,只作为一次调用处理。
能考虑if条件里也有函数调用的情况最好,寻高效的算法程序。

c java php

遗忘的雷扎德 11 years, 8 months ago

可以这么认为:把函数间的调用关系想象成有向图,一个函数就是节点,调用关系就是边(调用者指向被调用者)。要解决的问题就是从只有出度的点到只有入度的点有几条路径。
起点可以认为只有主函数,终点可能有好几个。

去找找图的算法吧。个人认为深搜就可以

N.sweet answered 11 years, 8 months ago

Your Answer