Tính tổng cấp số nhân mà không dùng vòng for

cho 2 số a,b
có cách nào tính sum(a,b)= a^0 + a^1+…+a^b mà ko dùng vòng lặp ạ

Thật sự b không để tùy ý được :smiley:

Với a khác 1 ta nhân hai vế với a, rồi trừ hai vế với S.

3 Likes

không dùng được loop thì bác dùng hàm đệ quy xem đc không ạ. Đệ quy cũng na ná loop mà nhỉ. Bác nên thử tự code xem. Cần tham khảo thì đây là code C của em . Hơi dài nhưng vẫn dùng đc.

#include <stdio.h>
#include<stdlib.h>

int tinh_luy_thua(int a, int b){
	if( b == 0 ) return 1;
	if( b == 1) return a;
	return a * tinh_luy_thua(a , b - 1) ;
}

int sum (int a , int b ){
	if(b == -1) return 0;
	
	return tinh_luy_thua(a , b)  + sum( a , b - 1);
}

int main(){
	int a ,b ;
	scanf("%d%d", &a , &b); 
	printf("\nSum = %d" ,sum (a , b));

	  return 0;
}

4 Likes

image

3 Likes

\displaystyle \Large \sum_{k=0}^{b} a^k = \frac{a^{b+1}-1}{a-1},\ \ a\neq 1 :smiley:

9 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?