#include <iostreamh>
int func(int n)
{
if(n==1)
return 1;
if(n>1)
return nfunc(n-1);
}
void main(int agrc,int argv)
{
int N;
cout<<"Input the number:";
cin>>N;
int sum=func(N);
cout<<sum<<endl;
}
编写一个求任意正整数n!的函数过程(两种方法,其中一种为递归法求n。),受计算机数据精度的限制,只能计算到17的阶乘
Dim n As Integer
For n = 1 To 17
Print n; ":",
Print fac1(n),
Print fac2(n)
Next n
End Sub
Function fac1(n As Integer) As Double
Dim x As Double
x = 1
For i = 2 To n
x = x i
Next i
fac1 = x
End Function
Function fac2(n As Integer) As Double
If n < 2 Then
fac2 = 1
Else
fac2 = fac2(n - 1) n
End If
End Function
c++用递归法求 0!~5,使用函数编写程序#include<iostream>
using namespace std ;
long factorial(int n) ;
void main(void)
{ for(i=0;i<=5;i++)
cout << " 阶乘 " << factorial(i) << endl << " " ;
return ;
}
long factorial(int n)
{
return n == 1 1 : n factorial(n-1) ;
}
写一个求n!的递归函数,调用该函数求m!/(n!(m-n)!)的值我会编,就是没见着分啊
编一函数求Fibnai数列中 fib(n)的值,要求用迭代而不是用递归法用VB写的~
Private Sub Form_Load()
Dim fn&, f1&, f2&, n%
f1 = 1: f2 = 1
n = Val(InputBox("请输入n"))
fn = f1 + f2
Print f1
Print f2
Print fn
For i = 1 To n
f1 = f2
f2 = fn
fn = f1 + f2
Print fn
Next i
End Sub
用递归法对下列狮子编写一个函数 f(x,n)=x-x 2+x 3-x 4+……+(-1) (n-1)x n (n>0) 会的帮帮忙吧,作业啊
double f(int x,int n){
if(n==1) return x;
else return -(n-1)pow(x,n)f(x,n-1);
}
记得头文件添加 #include "mathh"
编写一个函数delchar(char s1,char s2),从字符串s1中删去与s2相同的字符。用main()测试该函数。用递归法#include<iostream>
using namespace std;
char delchar(char s1, char s2) 函数定义
{
if (s1 == '\0')
return s1;
if (s1 == s2) {
strcpy(s1, s1 + 1);
delchar(s1, s2);
} else {
delchar(++s1, s2);
}
return s1;
}
int main()
{
char s1[] = "bsklambdabag";
char s2 = 'a';
cout<<"原来的字符串是:\n"<<s1<<endl;
delchar(s1, s2); 函数调用
cout<<"删除后指定字符后的字符串是:\n"<<s1<<endl;
return 0;
}
用C语言 写一个函数用于计算1!+2!+3!+…+n!的值(使用函数递归完成)#include <stdioh>
int Func(int);
int Sum(int);
int main ()
{
int i,n;
printf("请输入n值:");
scanf("%d",&n);
printf("1!+2!++n!=%d\n",Sum(n));
return 0;
}
int Func(int n) 递归求n!
{
int sum=1;
if(n==1 || n==0)
return 1;
else
sum=nFunc(n-1);
return sum;
}
int Sum(int n) 求1!+2!+。。。+n!的结果
{
int i=1,sum=0;
for(;i<=n;i++)
{
sum+=Func(i);
}
return sum;
}
用递归法写一个折半查找的算法二分查找前提数组元素已按升序排序
int binsearch(int value, int a[], int nArrayLen)
{
int nMid = nArrayLen / 2;
if (value == a[nMid])
return nMid; 找到下标
if (nMid == 0)
return -1; 找不到
if (value < a[nMid])
return binsearch(value, a, nMid);
else
return binsearch(value, a + nMid, nArrayLen - nMid);
}
编写一个函数1+2+3++100要求用递归调用的方法实现,并写一个主函数输出的结int lianjia(int a)
{
if (a>1)
return (lianjia(a-1)+a);
else return 1;
}
int main()
{
int a=lianjia(100);
printf("%d",a);
return 0;
}
public class Test {
public int addToN(int n)//递归方法
{
if(n>0)//只有n>1 ,对于该算法来说才有意义
{
if(n==1)
{
return 1;//如果n=1,则返回1,即递归的结束标记
}
else
return n+addToN(n-1);//如果n>1,则调用自己,即递归
}
else
return 0;//n<=0时,对于该算法无意义
}
public static void main(String[] args) {
Scanner sc=new Scanner(Systemin);
Systemoutprint("请输入要计算的整数:");
int result=0;
int n=scnextInt();//接受键盘输入的整数
if(n>0)
result=new Test()addToN(n);//调用递归方法计算结果
while(n-->1)
{//输出(如6+5+4+)
Systemoutprint((n+1)+"+");
}
Systemoutprint((n+1)+"="+result);//输出1和结果值
}
}
#include"stdioh"
double
power(double
x,int
n)
//递归实现函数转换{double
val=10;
while(n--)
val=x;
return(val);}void
main()
{int
i,n,value=0;
char
ch;
printf("请输入您要输入的二进制位数:");
scanf("%d",&n);
printf("输入一个%d位二进制数:",n);
for(i=n;i>=0;i--)
{scanf("%c",&ch);
if(ch=='1')
value+=int(power(2,i));}
printf("十进制是:%d\n",value);
}
由于本人的英语水平有限,所以就用VC++软件,用C的知识写了这个程序。。
如果你要在C里运行。。貌似要把
中文
全部翻译成
英文
即可。。。
#include <iostream>
using namespace std;
int fun(int n){
int sum;
if(n==1)
{
cout<<n<<' ';
return 1;
}
else
{
sum=fun(n-1)+1;
cout<<sum<<' ';
return sum;
}
}
int main()
{
fun(100);
return 0;
}
非要递归么,
public static void main(String[] args) throws Exception {
String string="1234";
StringBuilder stringBuilder=new StringBuilder(string);
if(stringBuilderreverse()toString()equals(string))
Systemoutprintln("回文");
else
Systemoutprintln("不是回文");
}
看到有人写帖子问如果从m个数组中取N个原始的算法,要求一个是递归的,一个不是递归的。
递归的解法:(比较笨)
void getn(int a[], int b[] , int m, int n, int index,int lastindex)
{
int i = lastindex + 1;
if(index == n )
{
int x;
for(x = 0 ; x <</span> n ;x ++)
{
printf(" %d ",a[b[x]]);
}
printf(" ");
return ;
}
while( i <</span> m)
{
b[index] = i;
getn(a,b,m,n,index + 1,i);
i ++ ;
}
}
非递归的解法:
void agen(int a[],int m, int n)
{
int i ,j ;
int b[100] = {0};
i = j = 0;
while(b[0] <</span> m ) {
while( i <</span> m) {
if(j == n - 1 ) {
int x ;
for( x = 0 ; x <</span> n ; x ++) {
printf(" %d ",a[b[x]]);
}
printf(" ");
} else {
j ++;
}
i ++;
b[j] = i;
}
do {
j --;
b[j] ++ ;
} while(b[j] >= m );
i = b[j] ;
}
}
测试的主程序:
int main()
{
int a[10] = {0, 1,2,3,4,5,6,7,8,9};
int b[20] ={0};
getn(a,b,10,5,0,-1);
agen(a,10,5);
return 0;
}
#include "stdioh"
#include "malloch"
#define ELEMTYPE char
BiTNode bulid() /建树/
{ BiTNode q;
BiTNode s[20];
int i,j;
char x;
printf("请按顺序输入二叉树的结点以输入0和号结束\n");
printf("请输入要输入的为第几个结点i=\n");
scanf("%d",&i);
printf("请输入你要输入该结点的数为x=");
getchar();
scanf("%c",&x);
while(i!=0&&x!='')
{q=(BiTNode)malloc(sizeof(BiTNode));
q->data=x;
q->rchild=NULL;
q->lchild=NULL;
case(1): preoder(bt); goto k1;
case(2): InOrder(bt); goto k1;
case(3): postOrder(bt); goto k1;
case(0): break;
root=(struct lbtree )malloc(sizeof(struct lbtree));
root->data=ch;
root->lchild=createbtree();
root->rchild=createbtree();
return(root);
}
dl=treedepth(root->lchild);
dr=treedepth(root->rchild);
if(dl>dr)depth=dl+1;
else depth=dr+1;
扩展资料:
(1)完全二叉树——若设二叉树的高度为h,除第 h 层外,其它各层 (1~h-1) 的结点数都达到最大个数,第h层有叶子结点,并且叶子结点都是从左到右依次排布,这就是完全二叉树。
(2)满二叉树——除了叶结点外每一个结点都有左右子叶且叶子结点都处在最底层的二叉树。
(3)平衡二叉树——平衡二叉树又被称为AVL树(区别于AVL算法),它是一棵二叉排序树,且具有以下性质:它是一棵空树或它的左右两个子树的高度差的绝对值不超过1,并且左右两个子树都是一棵平衡二叉树。
参考资料来源:百度百科-二叉树
以上就是关于用递归法编写一个函数fac,求n!的值全部的内容,包括:用递归法编写一个函数fac,求n!的值、JAVA递归--编写程序,要求用递归方法求 1 + 2 + ••• + n,n是由键盘输入、C语言递归算法写二进制转十进制的程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)