展开全部
首先,调用了fun(3)之后,就算fun函数调用了1次。然后经过if判断,因为传的参数3(即k)不等于也不小于1,所以最终判断是return fun(k-1)+1。因为参数k是3,那么k-1就是2。然后继续调用函数(这时是共调用了2次了,即fun(k-1)),经过if判断,因为传的参数2(即上一次调用函数传的k-1)不等于也不小于1,所以最终判断还是return fun(k-1)+1。然后继续调用函数(这时共调用了3次了,即fun(k-1)),注意,这时候k-1是1了,所以经过if判断,k是等于1,所以最终判断为return 1,就不必继续else了。
总共下来,这个函数调用了3次。
如果这个让你感到有点绕,那你可以写下代码测试,我这里有:
#include<stdio.h>
int a = 0;
int fun(int k)
{
++a;
if (k < 1)
return 0;
else if (k == 1)
return 1;
else
{
return fun(k - 1) + 1;
}
}
int main()
{
int b = fun(3);
printf("%d\n", a);
return 0;
}
这里我设了一个全局变量a,用来记录调用次数。在fun函数中,第一行代码就是a自加1。然后在main函数中,我调用了fun(3),调用完后输出a。你会发现,输出的是3。这正好证明一共调用了3次。
展开全部
有几种方法可以使用,可以把下面的函数放在上面是最简单的方法,也可以使用函数声明,在调用该函数之前先声明,在#include 下面写上int scond(int ,int ); 形参无需变量名,只要声明函数类型就OK了。
追问
形参没有变量名,怎么说明这个函数是干嘛的呀 ,我看书上说的是可以省略数据类型呀比如 数据类型 函数名 (形参1 形参2) 。这样括号里面的形参不用再次说明它的数据类型了。而你说的是 数据类型 函数名 (数据类型1 数据类型2) 。你的这种括号里面没有参数呀 只有数据类型 这样你怎么说明这个函数是干啥的呀?
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询