c - 函数内的函数(引用)

标签 c function reference

刚开始学C语言,有这个函数要解释,但实在是看不懂。

int uknown(int a, int b)
    {
        if  (b == 1) return a;
        else return a + uknown(a, b - 1);
    }

例如,当我将函数与 printf 命令一起使用时:

#include <stdio.h>

int main()
{
    printf ("Value = %i", uknown(3,4));
    system("pause");
}

我得到的返回值为 12。但我很难理解计算是如何进行的。

最佳答案

这是一个 recursive通过加法将两个整数相乘的方法。该函数递归调用为

uknown(3,4) calls (since b != 1)
      uknown(3,3) calls (since b != 1)
            uknown(3,2) calls (since b != 1) 
                  uknown(3,1) returns 3 to uknown(3,2) (since b == 1)
            uknown(3,2) returns 3 + 3 = 6 to uknown(3,3) 
      uknown(3,3)  returns 3 + 6 = 9 to uknown(3,4) 
uknown(3,4)  returns 3 + 9 = 12 to printf in main 

关于c - 函数内的函数(引用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21534984/

相关文章:

c - 关于 OpenMP 的简单问题

c - 错误 : storage size of ‘Img’ isn't known

c - 有没有办法将程序文件中的代码和注释分开

C++:两个函数,每个函数都采用枚举参数,签名匹配?

javascript - 覆盖 craftyjs 中的函数

c - 如何去掉字符串中的空格?

jquery - 切换功能的更好方法

php - Codeigniter : Why assign it to a variable? 中的 get_instance()

c# - HtmlAgilityPack.HtmlDocument() 导致错误

c++ - 返回对临时、常量差异的引用