第二点,主函数调用了int age(int n)这个函数。在语句printf("%d\n",age(5))中调用的,不过主函数调用age函数之前没有声明,是不对的。但是如果用Visual C++的话,如果主函数写在后边可能也能执行。
既然你知道age函数是可以被调用的,那么你就用该知道,age函数自身也可以调用自己。所以 在age函数中有c=age(n-1)+2这句话这句话就是调用自己(age)函数
那么,现在来说说这道题的思路。
我们要知道第五个人的年龄(age(5)的值),就必须知道第四个人的年龄(age(4))然后用(age(4)+2)那么要知道age(4),就需要age(3)。直到age(1)。
再看看这个程序
ing age(int n) //n代表的是人的序号
{
int c//返回n的年龄
if (n==1) //如果说是第一个人的话
c=10//那么他的年龄就是10
else //
c=age(n-1)+2//如果不是第一个人,就调用前一个人的年龄
return(c)//
}
这样,也就是说只要不知道这个人的确切年龄(即不是第一个人)就通过age(n-1)求出前面一个人的年龄,知道知道确切年龄的人(第一个人)为止
#include <stdio.h>int main()
{
int i = 0, j=0
int slnum = 0
for(i=0i<=30i++)
for(j=0j<=10j++){
if((i+3*j) == 30){
slnum++
printf("%d,%d\n",i,j)
}
}
printf("the num of solution is %d\n",slnum)
return 0
}
其实就是x+3y = 30有多少解的问题
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)