编写程序C语言 用递归法求n,用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n...

本文介绍了如何使用C语言编写递归程序来计算特定序列的和,如1*2+2*3+3*4+(n-1)*n等,并提供了多个递归计算阶乘、数列和的示例,还包括了其他编程语言如汇编、PASCAL和VB的实现示例。
摘要由CSDN通过智能技术生成

用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n以下文字资料是由(历史新知网www.lishixinzhi.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

f93e034c348e4b4698c48825bcdbba17.png

用C语言编写一个递归程序用来计算:1*2+2*3+3*4+.+(n-1)*n

int fun(int n){

if(n==2){

return 2;

}else{

return fun(n-1)+(n-1)*n;

}

}

int main(int argc, char* argv[])

{

printf("fun(3)=%d\n", fun(3));

return 0;

}

编写一个递归子程序 计算N! (N)=0)的程序 最好用C语言

这样写: #include long fun(int n); void main() { int n; printf("请输入n的值:\n"); scanf("%d",&n); printf("这个数的阶乘是:%d\n",fun(n)); } long fun(int n) { if(n==1 || n==0) return 1; else return n*fun(n-1); }

采纳哦

用汇编语言编写“计算1+2*3+3*4.+N*(N+1)”的程序

M equ 自行定义,界定循环次数

N equ #2

S equ #1

Start:LDA #(N-1)

Loop:INCA ;A寄存器值加一

MOV A,B ;把A寄存器值放到B寄存器中

INCB

JSR Count ;跳转到Count子程序,进行计算

CMPA #M ;判断循环条件

BLO loop ;小于M的话继续循环

Print:输出

Count:MUL A,B

RTS

对应C代码如下:

#Define M 自行定义,界定循环次数

main()

{

int S=1;

int N;

for(N=2;N

{

S+=N*(N+1);

}

printf("d%",S);

}

谁能跟我编写一个程序(C语言)题目是编写一个函数计算sum(n)=1+2+3+。+n(n>=1)

int Cal(int n)

{

sum=0;

for(int i= 1;i<=n;++i)

sum+=i;

return sum;

}

求1×2+2×3+3×4+.+(n-1)×n

先提供一个特殊数列的前n项和公式:

1+4+9+16+……+n² = n(n+1)(2n+1)/6

再看题目中的

(n-1)×n = n² - n

因此,

原式= [1+4+9+16+……+n²] - [1+2+3+4+……+n]

=n(n+1)(2n+1)/6 - n(n+1)/2

=n(n+1)(n-1)/3

用汇编语言编写“计算1+2*3+3*4.+N*(N+1)且N*(N+I)<200”的程序

code segment

assume cs:codestart:

mov cx,1

mov ax,2

next:

cmp cx,200

jge exit

inc al

mov bl,al

dec bl

mul bl

add cx,ax

mov ax,0

mov al,bl

inc al

jmp next

exit:

mov al,bl AAM

mov dl,ah

mov bl,al

add dl,30h

mov ah,2

int 21h

mov dl,bl

add dl,30h

mov ah,2

int 21h

mov ah,4ch

int 21h

code ends

end start

编写递归程序,计算n! m!

看到有人写帖子问如果从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 < n ;x ++)

{

printf(" %d ",a[b[x]]);

}

printf(" ");

return ;

}

while( i < 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] < m ) {

while( i < m) {

if(j == n - 1 ) {

int x ;

for( x = 0 ; x < 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;

}

用PASCAL语言编写一个求1+2+3+.+N的程序

var s,i,n:long;

begin

write('N=');

readln(n);

s:=0;

for i:=1 to n do

s:=s+i;

writeln(s);

end.

编写计算(1+2-3+4-5+。-(n-1)+n)的程序

你好 我来回答你的问题

其实很好解决 用-1这个特殊的数来做

main()

{ int i,j=1,k=0;

for(i=1;i<=100;i++)

{ j=-1*j;

k=j*i+k; }

printf("%d",k);

getch();

}

看懂了吗 每回循环j都乘一次-1 也是j就从-1,1,-1,1来回变幻

你再乘以i i不就是正数负数的各一个变一次了吗 对吧?

我的C语言群34811055有什么问题可以加 还有我的QQ415654090

用VB程序编写一个过程来计算1+2+3+4+……+100的值。

Dim a As Integer '首项

Dim b As Integer '末项

Dim c As Integer '项数

Dim d As Integer '结果

Public Sub Add()

a = InputBox("首项", "")

b = InputBox("末项", "")

c = InputBox("项数", "")

d = (a + b) * c / 2

MsgBox d

End Sub

Private Sub Form_Load()

Call Add

End Sub

针对这个问题首项=1,末项=100,项数=100

end sub

分页:123

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值