clwn.net
当前位置:首页 >> rEturn((x>0)?x*F(x%1):2);程序怎么读 >>

rEturn((x>0)?x*F(x%1):2);程序怎么读

if(x>0){return x*f(x-1);}else{return 2;}

((x>0) ? x* f(x-1):2);是一个三目表达式 可以这么理解它 A?B:C 其中A是一个布尔类型,也可以是一个条件表达式;B、C是A分别取真和假时所取得值(或者操作) 对于上面的题目中(x>0)就相当于A 当它为真时就相当于 return x*f(x-1) 当它为假的时候就相当于是 return 2;

int f(int x)//定义的是一个函数,函数名为f 参数为x 数据类型为int,该函数int f(int x),表明返回值是一个int类型的,*表示乘法运算, x* f(x-1) =x 乘以f(x-1)的函数运行的返回值

你的程序我在软件复制了一遍,出现语法错误哦而且我改了逗号语句后(程序在后面),我认为你这个程序有问题,当你主函数随便调用一次f(x)时,它都只会调用return语句,后面的语句都执行不了,因为程序是顺序执行的.你一进入这

这是函数的递归调用 f(x) 当x小于等于零时f(x)=1 f(3)带到函数中,3大于数返回值为f(3-1) + f(1) 即f(2) f(1)之和2大于零,所以f(2)=f(1)+f(-1), 而1仍然大于0,所以f(1) = f(0)+f(-1) 根据条件所以f(1)=2 f(2)=3 f(3)=f(2)+f(1)=(f(1) + f(-1)) + f(1)=((f(0)+f(-1))+f(-1)) + (f(0)+f(-1))=((1+1)+1)+(1+1)=5

代入得f(1)=2;f(f(1))=f(2)=2*f(1)=4i=4;

#include<stdio.h>int f(int x) {return ((x>0)?x*f(x-1):2);//if(x>0)return x*f(x-1);else return 2;}int main(){ int i; //f(0)=2; //f(x)=x*f(x-1);(x>0) //f(1)=1*f(0)=2; //f(2)=2*f(1)=4; //f(3)=3*f(2)=12;i=f(1);//f(1)=2;i=f(i);//f(2)=2*f(1)=4;printf("%d",i);}

月浪江湖 | 二级 你想算x的阶层吧,不过int f(int x)函数中z没有声明,递归调用中,第一个z=1*f(0);z也就是1啦,第二个z=2*f(1),而这时f(1)=1,所以z为2;后面的以此类推,看看C书中函数的递归调用,好好体会就行了. 追问可是main函数里 写的

你好!函数的递归调用 f(3)=f(2)+f(1)=f(1)+f(0)+f(1)=2(f(0)+f(-1))+f(0)=5; 仅代表个人观点,不喜勿喷,谢谢.

#include float f(float x) { return ((fabs(x) - 2) / (x * x + 1)); } int main() { float x = 0.0; scanf("%f", &x); printf("%f\n", f(x)); return 0; }

相关文档
mdsk.net | qwrx.net | lstd.net | prpk.net | rjps.net | 网站首页 | 网站地图
All rights reserved Powered by www.clwn.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com